2013-05-28 3 views
4

У меня следующее поведение.
Я перегружаю focusOutEvent() обработчик для моего класса виджета. Но обработчик называется не только, когда фокус виджета фокусируется, но и при нажатии на него. Точно так же, как это будет потерять внимание, а затем восстановить его.Фокусное событие при нажатии на сфокусированный виджет

Вопрос 1: Это ошибка?
Вопрос второй: Если нет, есть ли разумный способ справиться с потерей фокуса? - Отсекание всех сигналов focusChange() не выглядит привлекательным.

Я пользуюсь Qt5.1

+0

Какова политика фокусировки вашего виджета? – cmannett85

+0

Я пробовал 'Сильные' и' Click'. – Number47

+2

У вас есть один или несколько экземпляров этого виджета, когда кто-то получает фокус, другие теряют его. Платформа? Образец кода? Другие детали? – Chugaister

ответ

0

Назовите свои виджеты.

myWidget->setObjectName("MyWidget 1"); 

myWidget2->setObjectName("MyWidget 2"); 

Тогда в верхней части focusOutEvent() и вашей focusInEvent(), положить полезный но отладочный код:

qDebug() << Q_FUNC_INFO << "called by" << qPrintable(this->objectName()); 

Теперь вы можете увидеть, что вызывает проблему.

Вы также можете сбросить дерево объектов, чтобы вы могли видеть, есть ли у вас несколько экземпляров, плавающих вокруг.

QObject::dumpObjectTree(); 

Но назвать это от вашего QMainWindow или что-то окно является внешний окно.

Надеюсь, что это поможет.

 Смежные вопросы

  • Нет связанных вопросов^_^