2013-05-28 58 views
4

我有以下行为。
我为我的小部件类重载focusOutEvent()处理程序。但是,处理程序不仅被称为,当小部件损失集中时,而是在点击它时。就像它会失去焦点,然后重新获得它。单击焦点部件时的聚焦事件

问题一:这是一个错误吗?
问题二:如果不是,是否有合理的方法来处理重点丢失? - 插槽全部focusChange()信号看起来不吸引人。

我正在使用Qt5.1

+0

什么是您的小工具的焦点政策? – cmannett85

+0

我尝试过'强'和'点击'。 – 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或任何窗口是最外面的窗口。

希望有所帮助。