我需要使用 qtest(在 eclipse 中)在 c++ qt 中自动化 gui 测试我已经提供了一个函数,可以将一些选项卡添加到 tabwidget(最多 9 个),如果您尝试打开第 10 个选项卡,则会出现一个 QMessageBox:
QMessageBox::critical(this, "MAX9",
tr("Only a maximum of 9 tabs can be opened.\n"));
因为带有“添加选项卡”功能的整个菜单和所有内容都是私有的,所以我必须使用来自我的测试类的插槽和信号来访问该方法。
现在我的问题是,有没有办法可以检查是否有任何 QMessageBoxes 打开,如果是,自动关闭它们?
编辑:已解决我将 vahancho 的解决方案放入一个方法(CloseMessageBoxes)中,并在我的测试方法中创建了一个计时器,然后调用 CloseMessageBoxes() 方法:
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(CloseMessageBoxes()));
timer->start(5000);
出现多个消息框,但所有消息框都在 5 秒后自行关闭。