Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何获得小部件';儿童在Qt?_C++_Qt_Widget_Keypress_Qtestlib - Fatal编程技术网

C++ 如何获得小部件';儿童在Qt?

C++ 如何获得小部件';儿童在Qt?,c++,qt,widget,keypress,qtestlib,C++,Qt,Widget,Keypress,Qtestlib,我通过Qt的按键功能模拟应用程序的按键。所有的按键都很好用。但是,当我传递一个QT::Key\u Enter按钮,该按钮应按下当前活动窗口的OK按钮,或者传递取消按钮的QT::Key\u Cancel按钮时,它不会执行任何操作 我在想,可能是因为这些按钮没有焦点,而父窗口本身也有焦点。你是如何得到一个窗口的孩子的?或者更确切地说,在它上面找到OK或Cancel按钮,这样你就可以将它设置为activeWindow,然后成功地通过按键 我有: QWidget *pWin = QApplication

我通过Qt的按键功能模拟应用程序的按键。所有的按键都很好用。但是,当我传递一个
QT::Key\u Enter
按钮,该按钮应按下当前活动窗口的OK按钮,或者传递取消按钮的
QT::Key\u Cancel
按钮时,它不会执行任何操作

我在想,可能是因为这些按钮没有焦点,而父窗口本身也有焦点。你是如何得到一个窗口的孩子的?或者更确切地说,在它上面找到OK或Cancel按钮,这样你就可以将它设置为activeWindow,然后成功地通过按键

我有:

QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?
您可以使用具有对象名称的函数来获取特定的子对象。 您可以使用too
findChildren
获取具有相同名称的所有子项,并使用
foreach
或遍历列表

要获取按钮,您可以尝试:

QPushButton* button = pWin->findChild<QPushButton*>("Button name");
QPushButton*button=pWin->findChild(“按钮名称”);

您可能希望在小部件上设置一个自定义项来捕获关键事件,并查看它的实际情况。

如何使用QListIterator?文档中对此进行了解释:是的,我已经读过了。但我认为当你得到QWidget的孩子们的名单时,情况就不同了……为什么?所有课程都一样。您只需将自己的代码放入while循环1。如果没有活动窗口,pWin可以为NULL。2.如果列表是QList,则迭代器必须是QListIterator