我有以下行为。我为我的小部件类
重载处理程序。focusOutEvent()
但是处理程序不仅在小部件失去焦点时被调用,而且在单击它时被调用。就像它会失去焦点然后重新获得它一样。
问题一:是bug吗?
问题二:如果没有,是否有合理的方法来处理焦点丢失?-- 对所有信号进行开槽focusChange()
看起来并不吸引人。
我正在使用 Qt5.1
命名您的小部件。
myWidget->setObjectName("MyWidget 1");
myWidget2->setObjectName("MyWidget 2");
然后在 yourfocusOutEvent()
和 your的顶部focusInEvent()
,放置一个有用但调试代码:
qDebug() << Q_FUNC_INFO << "called by" << qPrintable(this->objectName());
现在您可以看到是什么导致了您的问题。
您可能还想转储对象树,以便查看是否有多个实例浮动。
QObject::dumpObjectTree();
但是从你的QMainWindow
或任何窗口调用它是你最外层的窗口。
希望有帮助。