4

我有以下行为。我为我的小部件类
重载处理程序。focusOutEvent()但是处理程序不仅在小部件失去焦点时被调用,而且在单击它时被调用。就像它会失去焦点然后重新获得它一样。

问题一:是bug吗?
问题二:如果没有,是否有合理的方法来处理焦点丢失?-- 对所有信号进行开槽focusChange()看起来并不吸引人。

我正在使用 Qt5.1

4

1 回答 1

0

命名您的小部件。

myWidget->setObjectName("MyWidget 1");

myWidget2->setObjectName("MyWidget 2");

然后在 yourfocusOutEvent()和 your的顶部focusInEvent(),放置一个有用但调试代码:

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

现在您可以看到是什么导致了您的问题。

您可能还想转储对象树,以便查看是否有多个实例浮动。

QObject::dumpObjectTree();

但是从你的QMainWindow或任何窗口调用它是你最外层的窗口。

希望有帮助。

于 2014-04-04T21:14:58.140 回答