У меня такое поведение.
Я перегружаю focusOutEvent()
обработчик для моего класса виджетов. Но обработчик вызывается не только тогда, когда виджет теряет фокус, но и при нажатии на него. Точно так же, как это потеряет фокус, а затем вернет его.
Вопрос первый: Это ошибка?
Вопрос второй: Если нет, есть ли разумный способ справиться с потерей фокуса? — прорезать все focusChange()
сигналы не выглядят привлекательно.
Я использую Qt5.1
Назовите ваши виджеты.
myWidget->setObjectName("MyWidget 1");
myWidget2->setObjectName("MyWidget 2");
Тогда на вершине вашего focusOutEvent()
и ваш focusInEvent()
Поместите полезный но отладочный код:
qDebug() << Q_FUNC_INFO << "called by" << qPrintable(this->objectName());
Теперь вы можете увидеть, что вызывает вашу проблему.
Возможно, вы также захотите сбросить дерево объектов, чтобы увидеть, есть ли у вас несколько экземпляров, плавающих вокруг.
QObject::dumpObjectTree();
Но позвони из своего QMainWindow
или какое-либо окно является вашим внешним окном.
Надеюсь, это поможет.
Других решений пока нет …