首页 > 解决方案 > Qt 在特定代码之后没有继续运行指令

问题描述

我正在尝试QInputDialog使用 for 循环将值放入数组中,但在达到最大值后它不会在循环后继续运行代码,直到我退出我的程序

void MainWindow::on_pushButton_clicked()
{

    nb = ui->lineEdit->text().toInt();

    for(i=1;i<=nb;i++)
        {
           QInputDialog *ValDialog = new QInputDialog();
           b[i] =ValDialog->getInt(this,"Best Fit","Block No : " + i,1,0,100000,1);

        }
    std::cout << "aAA\n" + b[0];

    //UNRUNABBLE instructions
}

for 循环之后的代码根本没有运行,直到我停止运行。

标签: c++qt

解决方案


根据 Qt 的文档:https QInputDialog::getInt(...) ://doc.qt.io/qt-5/qinputdialog.html#getInt将创建一个模态窗口。模态窗口基本上会阻塞主窗口(您的MainWindow类),直到用户关闭它。

这是有意的,这样您就不会继续编写代码,直到准备好结果。如果您希望在显示对话框后执行某些操作,但尚未关闭,您可能应该使用不同的方法(可能派生出您自己的方法QDialog)。


推荐阅读