我正在通过Qt的KeyPress功能模拟应用程序的keyPresses。所有的KeyPress工作正常。但是,当我传递QT::Key_Enter
时,它应该按下当前活动窗口的“确定”按钮,或者QT::Key_Cancel
传递取消按钮,它什么都不做。
我想也许,因为这些按钮没有焦点,父窗口本身就有了它。你怎么得到窗户的孩子?或者更确切地说,找到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?
答案 0 :(得分:51)
您可以将findChild
函数与对象名称一起使用以获取特定子项。
您也可以findChildren
使用foreach
或QListIterator
来获取具有相同名称和迭代列表的所有子项。
要获得按钮,您可以尝试:
QPushButton* button = pWin->findChild<QPushButton*>("Button name");
答案 1 :(得分:2)
您可能希望在窗口小部件上放置一个自定义event filter来捕获关键事件,并查看它实际发生了什么。