【问题标题】:Qt: How do I get the currently running window?Qt:如何获取当前运行的窗口?
【发布时间】:2011-05-11 21:39:13
【问题描述】:

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

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"));

【问题讨论】:

    标签: c++ unit-testing user-interface qt qtestlib


    【解决方案1】:

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

    希望有帮助

    【讨论】:

    • 我遇到了分段错误。我可能做错了什么...我更新了上面的代码块... :(
    • 如文档中所述,如果没有窗口具有输入焦点,则返回指针可以为空。这可能发生在寡妇没有键盘输入小部件的情况下。尝试在测试窗口中添加 QTextEdit。
    • 问题是,每次按键后出现的窗口是一个带有菜单的窗体...我不能只添加一个 qtextedit 或只修改我需要测试的应用程序... :( 。还有其他方法可以获取当前活动窗口的指针吗?
    • 是不是因为你在模拟的时候真的没有任何激活的窗口?
    • 活动窗口是具有键盘输入焦点的窗口。在调用 activeWindow() 之前尝试将焦点设置到窗口或菜单。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-02
    • 1970-01-01
    • 2017-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多