Название: QProgressDialog в отдельном потоке Отправлено: minigo от Апрель 14, 2011, 16:37 Всем доброго времени суток.
Подскажите, у меня в приложении есть определённые расчёты, занимающие по полминуты иногда минуту. Раньше, когда комплекс был написан на MFC я для отображения процесса расчёта (без точного указания времени) запускал диалоговое окно в котором запускался отдельный поток, который в свою очередь обновлял прогресбар. причём этот диалог был модальный (что очень важно)! Возможно либ подобное сделать в Qt ? Название: Re: QProgressDialog в отдельном потоке Отправлено: Пантер от Апрель 14, 2011, 16:39 Расчеты в отдельном потоке, откуда сигналишь основному потоку о процентах выполнения.
Название: Re: QProgressDialog в отдельном потоке Отправлено: minigo от Апрель 14, 2011, 16:45 Расчеты в отдельном потоке, откуда сигналишь основному потоку о процентах выполнения. Расчёты поставляются в виде отдельной длл, поэтому ничего отсылать не могу. Переносить расчёты из основного потока в отдельный пока тоже затруднительно, поэтому ищу промежуточное решение когда модальный прогрессдиалог заблочит всё приложение на время расчётов. Название: Re: QProgressDialog в отдельном потоке Отправлено: RedDog от Апрель 14, 2011, 16:55 Вызов ф-ции из длл делать в отдельном потоке, и из него слать сигналы в модальную форму (которая этот отдельный поток и породит)
Название: Re: QProgressDialog в отдельном потоке Отправлено: minigo от Апрель 14, 2011, 17:00 Вызов ф-ции из длл делать в отдельном потоке, и из него слать сигналы в модальную форму (которая этот отдельный поток и породит) вызов алгоритма расчёта - это один метод и его прогресс оценить невозможно. В метод расчёта уходит порядка 10 различных объектов, первоначально никто не планировал ставить на них всех мютексы и т.д., поэтому вывести расчёты в отдельный поток не получается (либо на пару недель зависну), поэтом мне и нужно быстрое промежуточное решение. Название: Re: QProgressDialog в отдельном потоке Отправлено: mutineer от Апрель 14, 2011, 17:03 А как ты раньше выполнял его в отдельном потоке и прогресс оценивал?
Название: Re: QProgressDialog в отдельном потоке Отправлено: minigo от Апрель 14, 2011, 17:16 А как ты раньше выполнял его в отдельном потоке и прогресс оценивал? Раньше у меня был диалог, который создавал отдельный поток и в этом потоке обрабатывался прогрессбар. Этот диалог был модальный. А в основном потоке работали расчёты. Это я замутил на MFC. А прогресс я не оценивал, это типа busy indicator Название: Re: QProgressDialog в отдельном потоке Отправлено: Fess от Апрель 15, 2011, 08:52 ставь для QProgressBar min и max в 0 и будет BusyIndicator.
Или прикрути вот это: http://qt-apps.org/content/show.php/QProgressIndicator?content=115762 на модальную форму. Название: Re: QProgressDialog в отдельном потоке Отправлено: Авварон от Апрель 15, 2011, 09:25 QApplication::processEvents
а вообще необязательно делать мьютексы, если запись и чтение происходит лишь из одного потока в один момент времени (пока висит модал диалог мы не трогаем данные и ждем конца вычислений) |