我想要做的是显示一组设置测试的页面。一旦所有细节都正确,用户按下 Commit 并显示下一个向导页面,我想立即在其中运行一系列测试。将这些显示给用户,一旦完成,用户就可以单击 Next。
我知道禁用 Next 只是返回 false 的一种情况,isComplete()
并且可以正常实施。所以,我想使用在小部件显示后调用的函数,所以我使用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();
}
}
然而,这个函数似乎被调用了两次(我认为在小部件显示之前,尽管这可能是我调试的一个技巧),因此它会导致定时器出现问题,我认为定时器永远不会结束。我确实在文档中阅读了有关自发事件的信息,但据我所知,对该函数的两次调用都不是自发的。
它是否被故意调用了两次,如果是,我该如何停止它或者是否有其他功能可以使用?
谢谢!