Я разрабатываю настольное приложение Qt. Мне нужно показать неопределенный индикатор выполнения пользователя во время моей программы. Я не могу определить время вычислений и не могу определить количество шагов, поэтому в моей реализации единственным признаком является использование неопределенного индикатора выполнения. Я попытался использовать QProgressDialog. Единственный вариант, который работал (я имею в виду показал прогресс пользователя бар) было что-то вроде этого:Qt5 progress bar
QProgressDialog dialog("Computing", "Cancel", 0, 0);
dialog.setWindowModality(Qt::WindowModal);
dialog.exec();
//further code
Но, как вы можете понять, что в дальнейшем код не работал в то время как диалог выполнял.
Я также попытался использовать метод show(), но Qt не отобразил диалоговое окно, я имею в виду, что в окне калькуляции было прозрачно.
Итак, не могли бы вы предложить некоторые решения, которые помогут мне показать индикатор работы пользователя и вычислить одновременно? Время вычисления может сильно отличаться.
Если вы делаете длинное вычисление после show() в том же потоке, вы блокируете цикл событий, и индикатор выполнения никогда не будет окрашен. Вызов processEvents() был бы уродливым обходным решением (пользовательский интерфейс будет все еще очень вялым), рабочий поток - это чистое решение. –