我想要做的是显示一组设置测试的页面。一旦所有细节都正确,用户按下提交,将显示下一个向导页面,我想立即运行一系列测试。向用户显示这些测试,一旦完成,用户就可以单击下一步。
我知道要禁用Next只是在isComplete()
上返回false的情况,并且执行正常。因此,我想使用在窗口小部件显示后调用的函数,因此我使用了showEvent()
作为要使用的函数。
目前我的测试只是将进度条显示为测试因此使用计时器。
void RunTestWizardPage::showEvent(QShowEvent *event)
{
ui->statusEdit->setText("Running Tests");
timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), this, SLOT(update()));
timer->start(100);
}
void RunTestWizardPage::update()
{
static int i = 10;
ui->statusEdit->append("Running Tests...");
ui->testProgress->setValue(i++);
if(i == 100)
{
i = 0;
timer->stop();
complete = true;
emit completeChanged();
}
}
然而,这个函数似乎被调用了两次(我想在小部件显示之前虽然这可能是我调试的一个技巧)并且因此它会导致计时器问题,我认为计时器永远不会结束。我确实在关于自发事件的文档中读过,但从我所看到的,对函数的调用都不是自发的。
它是否被故意调用两次,如果是这样,我该如何阻止它或是否有其他功能可以使用?
谢谢!