Qt:如何获取当前正在运行的窗口?

10

我正在编写一个测试应用程序,模拟按键操作,并希望获取每次按键后显示的窗口。以下是代码块。

std::auto_ptr<MyForm> pForm(new MyForm(3,3)); 
QTest::keyPress(pForm.get(), Qt::Key_0); 

在这里按下 0 后,会弹出一个窗口,我想检查一下是哪个窗口,以便稍后进行 QCompare/评估。

有什么想法吗?

更新:

当我使用时,我得到了一个分段错误。

std::auto_ptr<MyForm> pForm(new MyForm(3,3)); 
QTest::keyPress(pForm.get(), Qt::Key_0); 
QWidget *pWin = QApplication::activeWindow();
QCOMPARE(pWin->windowTitle(), QString("My Second Menu"));
1个回答

11
如果您的应用程序创建了所有窗口,您可以使用 QApplication 类。例如,activeWindow() 函数返回具有输入焦点的小部件。还有很多其他函数可以帮助您。
希望这能帮到您。

我遇到了一个分段错误。可能是我做错了什么...我已经更新了上面的代码块... :( - Owen
5
根据文档,如果没有窗口具有输入焦点,则返回指针可能为null。这可能发生在窗口没有键盘输入小部件的情况下。请尝试在测试窗口中添加一个QTextEdit。 - Patrice Bernassola
问题是,每次按键后出现的窗口是一个带有菜单的表单... 我不能只添加一个qtextedit或修改需要测试的应用程序... :(。是否有其他方法可以获取当前活动窗口的指针? - Owen
1
这是因为在模拟时实际上没有任何激活的窗口吗? - Owen
一个活动窗口是指具有键盘输入焦点的窗口。在调用activeWindow()之前,尝试将焦点设置到窗口或菜单。 - Patrice Bernassola
链接已失效。 - Manthan Tilva

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接