gpt4 book ai didi

c++ - QT 在锁定线程中通过 QTest 关闭窗口

转载 作者:行者123 更新时间:2023-11-28 05:47:07 25 4
gpt4 key购买 nike

我有一个 QT 应用程序,我想用 QTest 测试它。简要介绍一下我想做什么:我有一个主窗口,按钮 Settings 位于其中。如果我点击这个按钮,就会出现 QDialog。我想测试这是否真的发生了

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

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

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

我做错了什么?

最佳答案

您可以使用QTimerQTest::keyClick() .

如果你的QMessgeBox的指针是msgBox,在QTimertimeout()槽中,

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

此外,您可以使用 QCOMPARE macro 测试文本.

QCOMPARE( sourceText, targetText );

追加

我认为QTimer::singleShot有助于解决您的问题。

QMessageBox test;
QDialog& dlg = test;
QTimer::singleShot( 2000, &dlg, SLOT( close() ) );
dlg.exec();

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

MainWindow mwindow;
QDialog& dlg = mwindow;
QTimer::singleShot( 2000, &dlg, SLOT( close() ) ); //or SLOT( quit() )?
QTest::mouseClick(mwindow->showButton, QtCore::Qt::LeftButton)

但是,我还没有测试过。另外,尝试阅读 this articles .希望对您有所帮助。

关于c++ - QT 在锁定线程中通过 QTest 关闭窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35998323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com