2010-11-30 56 views
21

我通過Qt的KeyPress函數模擬keyPresses到應用程序。所有的KeyPress都能正常工作。然而,當我通過QT::Key_Enter這應該按下當前活動窗口的確定按鈕或QT::Key_Cancel取消按鈕,它什麼都不做。你如何獲得Qt中的小部件的孩子?

我在想也許,因爲這些按鈕沒有焦點,並且父窗口本身有它。你如何得到窗戶的孩子?或者在其上找到OK或Cancel按鈕,以便您可以將其設置爲activeWindow,然後成功傳遞KeyPresses?

我:

QWidget *pWin = QApplication::activeWindow; 
QObjectList *pList = pWin->children(); 
//how do you iterate through the list and find the OK or Cancel button? 

回答

44

您可以使用findChild函數對象名稱來獲取特定的孩子。 您也可以使用findChildren來獲取所有名稱相同的子女,並使用foreachQListIterator迭代列表。

爲了得到一個按鈕,你可以嘗試:

QPushButton* button = pWin->findChild<QPushButton*>("Button name"); 
+0

我該如何使用QListIterator? – Owen 2010-11-30 10:15:16

2

你可能想要把一個自定義event filter你的小部件來捕獲的關鍵事件,看看到底發生了什麼吧。

相關問題