Russian Qt Forum
Ноябрь 24, 2024, 09:44 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: События FocusIn/FocusOut применительно к QComboBox  (Прочитано 4823 раз)
andi
Гость
« : Февраль 15, 2007, 10:04 »

Есть такая проблема (пока не забыл Qt3.3.6).
На форме лежит пара QLineEdit и один QComboBox
В конструкторе формы завожу фильтр событий:
Код:

le_0->installEventFilter(this);
cb_0->installEventFilter(this);
le_1->installEventFilter(this);

и обработчик:
Код:

bool PassForm::eventFilter(QObject *target, QEvent *event)
{
int flag = 0;

if(target == le_0) flag = 1;
if(target == le_1) flag = 2;
if(target == cb_0) flag = 3;

  if(event->type() == QEvent::FocusIn)
  cout<<"Filter event : FocusIn :  flag = "<<flag<<endl;
  if(event->type() == QEvent::FocusOut)
  cout<<"Filter event : FocusOut :  flag = "<<flag<<endl;

return QDialog::eventFilter(target, event);
}


Так вот, когда мышкой на форме тыкаешься в эти виджеты, выпрыгивают соответствующие надписи. Кто фокус получил, кто фокус потерял. При этом LineEdit исправно эти сигналы отправляет, а подлый ComboBox ни в какую.
Хотя другие события (типа нажатия кнопок, раскрытие списка и прочее) отрабатывается нормально.
В чем может быть загвоздка?
Записан
Steven_Orko
Гость
« Ответ #1 : Февраль 18, 2007, 22:34 »

У комбобокса есть такой штук:
QLineEdit * QComboBox::lineEdit () const
Returns the line edit, or 0 if there is no line edit.
Only editable listboxes have a line editor.


Попробуй работать с указателем возвращаемого виджета...
Записан
andi
Гость
« Ответ #2 : Февраль 19, 2007, 10:35 »

Чего-то я не понял, к чему это ответ.
Это мне придется держать указатель на QLineEdit и с ним постоянно сравнивать?
А при смене строки обновлять этот указатель? Что-то мне подсказывает, что это костыль.

В своей реализации вывернулся так.
Комбобокс у меня один, а лайнедитов 2. То при потере ими фокуса, я сразу считаю ,что фокус у комбобокса. А если кто-то из них получает фокус, этот фокус и запоминаю.
Если комбобоксов будет больше то это не сработает.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.113 секунд. Запросов: 21.