В общем, долго бился с QProgressDialog в Qt 5.9.2. Пока не сделал минимальный пример, и не увидел что даже в нем у QProgressDialog присутствует баг.
Вообще, QProgressDialog - довольно странный компонент. У него уже была пара багов Qt 5.5 - 5.6.x QTBUG-47042 QTBUG-47049, и вот сейчас еще один, новый.
Но возможно, что это я что-то неправильно делаю, поэтому пишу сюда, может быть бага и нет.
Значит, программа состоит из главного окна, текстового поля и кнопки Find. Текстовое поле просто лежит на форме и ни с чем не связано. В обработчике клика по Find пишу такой код:
void MainWindow::on_findButton_clicked()
{
    long int totalRec=1000;
    // Показывается виджет линейки наполняемости
    progress->reset();
    progress->setLabelText( tr("Search...") );
    progress->setRange(0, totalRec);
    progress->setModal(true);
    progress->setMinimumDuration(0);
    progress->show();
    for(long int i=0; i<totalRec; i++) {
        progress->setValue(i);
        qApp->processEvents();
      if(progress->wasCanceled())
          break;
    }
    progress->hide();
    progress->cancel(); // Добавлено из-за регрессии, посмотреть как работает
}И если несколько раз понажимать на кнопку Find, заблокируется поле ввода. И если сделать несолько полей ввода на главном окне, заблокируются все. Без разницы QLineEdit или QTextEdit.
Текст можно в них выбирать, а вот изменить нельзя. И так будет продолжаться до тех пор, пока не переключишься на другое окно и не вернешься обратно.
Тут важно, что QProgressDialog настраивается модальным, и нельзя нажать кнопку Find еще раз, пока показывается прогресс бар. Кроме того, я несколько раз ловил ситуацию, что достаточно одного нажатия, чтоб заблокировались текстовые поля. Но для этого нужно чем-нибудь загрузить систему и поиграться со значением totalRec.
Как можно обойти этот баг?
Минимальный пример: http://rgho.st/68kYmnGng
Видео: https://www.youtube.com/watch?v=D2x6Cvic0fQ&feature=youtu.be
UPD: Можно даже последовательно нажимать мышкой то на Find то на текстовое поле. У меня с пятого раза текстовое поле блокируется.





