Qt не продолжал выполнять инструкции после определенного кода - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь заставить 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 вообще не запускался, пока я не остановил выполнение.

1 Ответ

0 голосов
/ 27 мая 2018

Согласно документации Qt: https://doc.qt.io/qt-5/qinputdialog.html#getInt QInputDialog::getInt(...) создаст модальное окно.Модальное окно в основном блокирует главное окно (ваш класс MainWindow) до тех пор, пока пользователь не закроет его.

Это сделано намеренно, так что вы не будете продолжать в коде, пока результат не будет готов.Если вы хотите выполнить что-то после того, как диалоговое окно показано, но еще не закрыто, вам, вероятно, следует использовать другой подход (возможно, получить собственный QDialog).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...