2013-05-28 56 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或任何窗口是最外面的窗口。

希望有所幫助。