Название: [Решено] QProgressDialog блокирует текстовые поля ввода (даже видео есть) Отправлено: xintrea от Декабрь 23, 2017, 15:19 Долго бился с QProgressDialog в Qt 5.9.2. Пока не сделал минимальный пример, и не увидел что даже в нем у QProgressDialog присутствует баг.
Вообще, QProgressDialog - довольно странный компонент. У него уже была пара багов Qt 5.5 - 5.6.x QTBUG-47042 QTBUG-47049, и вот сейчас еще один, новый. Но возможно, что это я что-то неправильно делаю, поэтому пишу сюда, может быть бага и нет. Значит, программа состоит из главного окна, текстового поля и кнопки Find. Текстовое поле просто лежит на форме и ни с чем не связано. В обработчике клика по Find пишу такой код: Код: void MainWindow::on_findButton_clicked() И если несколько раз понажимать на кнопку Find, заблокируется поле ввода. И если сделать несолько полей ввода на главном окне, заблокируются все. Без разницы QLineEdit или QTextEdit. Текст можно в них выбирать, а вот изменить нельзя. И так будет продолжаться до тех пор, пока не переключишься на другое окно и не вернешься обратно. Тут важно, что QProgressDialog настраивается модальным, и нельзя нажать кнопку Find еще раз, пока показывается прогресс бар. Кроме того, я несколько раз ловил ситуацию, что достаточно одного нажатия, чтоб заблокировались текстовые поля. Но для этого нужно чем-нибудь загрузить систему и поиграться со значением totalRec. Как можно обойти этот баг? Минимальный пример: http://rgho.st/68kYmnGng Видео: https://www.youtube.com/watch?v=D2x6Cvic0fQ&feature=youtu.be UPD: Можно просто медленно и раздельно понажимать мышкой на кнопку Find и на поле ввода. У меня после пяти раз поле ввода заблокировалось. Название: Re: Что делать? QProgressDialog блокирует текстовые поля ввода (даже видео есть) Отправлено: kambala от Декабрь 23, 2017, 18:47 в макос 10.12.6 на 4.8.7 и 5.6.2 все работает прекрасно и после 20 нажатий, прогресс тоже видно в течение секунды
Название: Re: Что делать? QProgressDialog блокирует текстовые поля ввода (даже видео есть) Отправлено: xintrea от Декабрь 25, 2017, 11:06 в макос 10.12.6 на 4.8.7 и 5.6.2 все работает прекрасно и после 20 нажатий, прогресс тоже видно в течение секунды Кароч, QProgressDialog не подходит для многоразового использования. Его надо каждый раз перед тем как показывать прогресс выполнения создавать, и потом сразу удалять. Тогда бага нет. Название: Re: [Решено] QProgressDialog блокирует текстовые поля ввода (даже видео есть) Отправлено: kambala от Декабрь 25, 2017, 15:42 так его вроде обычно вообще на стеке создают, отработал и исчез
|