Помогите пожалуйста с одним вопросом. Пишу программу в Qt с интерфейсом. При нажатии кнопки должны выполняться определенные действия, на некоторые значения стоит проверка и QInputDialog для изменения значения во время выполнения программы. Написали конструкцию do-while для проверки, при некорректном вводе значения программа работает исправно снова предлагая ввести корректное значение, однако когда ввожу требуемое значение, то программа просто зависает и перестает работать. Не пойму почему, при использовании точно такой же конструкции, но в консольном приложении все работает исправно. Пожалуйста подскажите как решить эту проблему.
void MainWindow::on_pushButton_clicked()
{
QLocale::setDefault(QLocale::C);
....
bool bv_1 = true;
bool ok;
do
{
if (ver_1 < 0 || ver_1 > 1)
{
double test = QInputDialog::getDouble(this, "Ошибка ввода!", "Недопустимая вероятность смерти. Введите число от 0 до 1!", ver_1, -2147483647, 2147483647, 3, &ok );
if (ok)
{
ver_1 = test;
}
else {
bv_1 = false;
break;
}
}
}while(bv_1); ....}
Очевидно, что единственная возможность выйти из цикла - это попадание в ветку if(ok)… else
. Так что цикл надо прерывать при успешной проверке числа:
while((ver_1 < 0) or (1 < ver_1))
{
double test = QInputDialog::getDouble(this, "Ошибка ввода!", "Недопустимая вероятность смерти. Введите число от 0 до 1!", ver_1, -2147483647, 2147483647, 3, &ok );
if(ok)
{
ver_1 = test;
}
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Задача: Многоугольник (необязательно выпуклый) задан на плоскости перечислением координат вершин в порядке обхода его границыОпределить...
Неправильно записывает и читает из файлаЗаписывает age = 5и Name = "Масло", а выводит age=0 и Name = ""
Переустановил Windows, поставив английскую версию (United States)После этого все файлы кода в Visual Studio, которые были написаны на русской версии, искажены,...