Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Батрадз от Май 10, 2019, 18:32



Название: Do-while зависает в Qt
Отправлено: Батрадз от Май 10, 2019, 18:32
Здравствуйте. Помогите пожалуйста с одним вопросом. Пишу программу в Qt с интерфейсом. При нажатии кнопки должны выполняться определенные действия, на некоторые значения стоит проверка и QInputDialog для изменения значения во время выполнения программы. Написали конструкцию do-while для проверки, при некорректном вводе значения программа работает исправно снова предлагая ввести корректное значение, однако когда ввожу требуемое значение, то программа просто зависает и перестает работать. Не пойму почему, при использовании точно такой же конструкции, но в консольном приложении все работает исправно. Пожалуйста подскажите как решить эту проблему.

Код
C++ (Qt)
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, "Error!", "Write number from 0 to 1!", ver_1, -2147483647, 2147483647, 3, &ok );
           if (ok)
           {
               ver_1 = test;
 
           }
           else {
               bv_1 = false;
               break;
           }
       }
   }while(bv_1);
.....
}


Название: Re: Do-while зависает в Qt
Отправлено: ssoft от Май 11, 2019, 00:02
Если ввести значение в интервале 0..1, то цикл становится бесконечным. Логическая ошибка.
При этом не понятно чем инициировано значение ver_1. По умолчанию там мусор.
Так как из описания не понятна требуемая функциональность, то анализируйте логику по шагам. Здесь поможет и простой отладчик.


Название: Re: Do-while зависает в Qt
Отправлено: Fregloin от Май 13, 2019, 17:30
Цикл не правльно оформлен