我怎样才能等待QWidget使用QTestLib关闭?[Qt5]

How can I wait for a QWidget to close using QTestLib? [Qt5]

本文关键字:关闭 QTestLib Qt5 使用 QWidget 等待      更新时间:2023-10-16

我正在为一个派生自QWidget的类编写一个基于 QTest 的测试用例。

显示小部件后

,我希望测试在小部件关闭后立即结束

我的第一次尝试是使用QSignalSpy,却发现QWidget真的没有在close()上发出信号。

那么使用QTest基元来做到这一点的"正确方法"是什么?

如果你为小部件指定 Qt::WA_DeleteOnClose 属性并等待它的 destroy() 信号怎么办?

pMyTestWidget->setAttribute(Qt::WA_DeleteOnClose);
pMyTestWidget->show();
// test thread...
QSignalSpy watchDog(pMyTestWidget, SIGNAL(destroyed(QObject*)));
watchDog.wait();