如何将Control转回上一个表单?

时间:2012-07-18 02:59:27

标签: qt qt-creator

我是Qt的新手。

我正在使用Qt Creator做一个项目。在我的项目中,我有一个mainWindow。从主窗口我开始4个屏幕(一个接一个,显示初始化过程)。如果任何屏幕上有任何错误,则会打开一个新的QDialog屏幕。我的错误屏幕有两个按钮(重试,继续)。如果我按重试,我必须重新启动初始化过程。 例如;

void ErrorScreen1::on_Retry_pressed()
{
    Screen1 *scrn = new Screen1(this); 
    scrn->show();
    this->close();
}

在上面的示例中,它会重新启动该过程。

有什么办法,我可以从它离开的那一刻开始初始化过程吗?

提前致谢,

3 个答案:

答案 0 :(得分:1)

一般来说,你应该以某种方式保持你的进程的当前状态,然后你可以恢复它。

答案 1 :(得分:0)

您是否考虑将这四个对话框分成四个步骤的向导?下一个按钮可以用于继续,你可以在每个页面上有一个有意义的重试按钮,只需要那个页面执行必要的重试逻辑。

答案 2 :(得分:0)

我通过使用QMessageBox作为我的错误窗口解决了这个问题。

它允许我从我离开的那一刻开始我的过程。

void Screen1::ErrorMessage()
{
    timer->stop();

    QMessageBox *msgbox = new QMessageBox(this);
    msgbox->setWindowTitle("ERROR MESSAGE");
    msgbox->setText("Initialization Failed.");
    msgbox->setStandardButtons(QMessageBox::Cancel | QMessageBox::Retry);
    msgbox->setDefaultButton(QMessageBox::Retry);

    int ret = msgbox->exec();

    switch (ret)
    {
        case QMessageBox::Retry: timer->start(); break;

        case QMessageBox::Cancel:
            timer->disconnect();
            ui->progressBar->setValue(0);
            break;

        default: break;

    }
}