我正在通过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");

其他提示

您可能想放一个自定义 事件过滤器 在您的小部件上捕获关键事件并查看真正发生的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top