showEvent()不止一次调用 - 故意?

时间:2012-06-15 10:42:35

标签: qt

我想要做的是显示一组设置测试的页面。一旦所有细节都正确,用户按下提交,将显示下一个向导页面,我想立即运行一系列测试。向用户显示这些测试,一旦完成,用户就可以单击下一步。

我知道要禁用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();
    }
}

然而,这个函数似乎被调用了两次(我想在小部件显示之前虽然这可能是我调试的一个技巧)并且因此它会导致计时器问题,我认为计时器永远不会结束。我确实在关于自发事件的文档中读过,但从我所看到的,对函数的调用都不是自发的。

它是否被故意调用两次,如果是这样,我该如何阻止它或是否有其他功能可以使用?

谢谢!

1 个答案:

答案 0 :(得分:1)

在显示页面之前调用QWizardPage::initializePage()