QTest在锁定线程中关闭QT窗口

时间:2016-03-14 21:21:22

标签: c++ qt qtestlib

我有一个QT应用程序,我想用QTest测试它。关于我想做的事情:我有一个主窗口,其中有设置按钮。如果我单击此按钮,则会出现QDialog。我想测试这是否真的发生

MainWindow mwindow;
QTest::mouseClick(mwindow->showButton, QtCore::Qt::LeftButton)

然后我会检查新对话框中是否存在文本等等。

出现对话框但是 - 如何在不手动关闭测试的情况下关闭它?我如何测试其中的文本存在。如果我做对了,在显示对话框时我无法在测试中做任何事情。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

您可以使用QTimerQCOMPARE macro

如果您的QMessgeBox指针位于msgBox,则位于QTimer的{​​{1}}位,

timeout()

此外,您可以使用QTimer::singleShot测试文字。

QTest::keyClick( msgBox, Qt::Key_Enter);

<强> APPEND

我认为this articles对于解决您的问题非常有用。

QCOMPARE( sourceText, targetText );

在上面的代码中,测试消息框将在2秒后关闭。 所以,你的代码可能......

QMessageBox test;
QDialog& dlg = test;
QTimer::singleShot( 2000, &dlg, SLOT( close() ) );
dlg.exec();
但是,我还没有测试过。 另外,请尝试阅读{{3}}。 我希望这可以帮到你。