您如何在QT中找到小部件的孩子?
题
我正在通过QT的KeyPress函数将KeyPress模拟为应用程序。所有的按键都可以正常工作。但是当我通过 QT::Key_Enter
应该按当前活动窗口的确定按钮,或者 QT::Key_Cancel
对于取消按钮,它无济于事。
我在想,也许是因为这些按钮没有焦点,并且父窗口本身具有它。您如何找到窗户的孩子?还是在其上找到确定或取消按钮,以便将其设置为ActiveWindow,然后成功通过按键?
我有:
QWidget *pWin = QApplication::activeWindow;
QObjectList *pList = pWin->children();
//how do you iterate through the list and find the OK or Cancel button?
解决方案
您可以使用 findChild
用对象名称函数以获取特定的孩子。你也可以使用 findChildren
让所有具有相同名称和迭代的孩子在列表中使用 foreach
或者 QListIterator
.
要获取一个按钮,您可以尝试:
QPushButton* button = pWin->findChild<QPushButton*>("Button name");
其他提示
您可能想放一个自定义 事件过滤器 在您的小部件上捕获关键事件并查看真正发生的事情。
不隶属于 StackOverflow