问:我如何获得当前运行的窗口?

Owe*_*wen 7 c++ user-interface qt unit-testing qtestlib

我正在编写一个模拟按键的测试应用程序,我想在每次按键后显示什么窗口.这是代码块.

std::auto_ptr<MyForm> pForm(new MyForm(3,3)); 
QTest::keyPress(pForm.get(), Qt::Key_0); 
Run Code Online (Sandbox Code Playgroud)

在这里按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"));
Run Code Online (Sandbox Code Playgroud)

Pat*_*ola 8

如果您的所有窗口都是通过您的应用程序创建的,则可以使用QApplication该类.例如,该activeWindow()函数返回具有输入焦点的窗口小部件.但是还有很多其他功能可以帮到你.

希望有所帮助

  • 如文档中所述,如果没有窗口具有输入焦点,则返回指针可以为null.这可能发生在寡妇没有键盘输入小部件的地方.尝试在测试窗口中添加QTextEdit. (4认同)