Russian Qt Forum

Qt => Многопоточное программирование, процессы => Тема начата: lex_newton от Декабрь 08, 2010, 17:58



Название: Проблема получения сигналов от потока в момент изменения размера виджета
Отправлено: lex_newton от Декабрь 08, 2010, 17:58
Есть некий виджет, размер которого можно менять. И второй поток, который отправляет в виджет сигналы.
В момент изменения размера виджета сигналы встают в очередь и обрабатываются лишь после того, как размер виджета был изменен (пользователь перестал изменять размер и отпустил кнопку мыши)

ОС: windows xp

Я создаю виджет который рисует график сигнала. В отдельном потоке создается QImage и по средствам signal/slot передается в виджет.
При зменении размера делается запрос на перерисовку графика(прямо в resizeEvent).

Аналогичный пример находится в примерах qt demo -> threading -> mandelbrot.

Вопрос:
Как сделать так, чтобы сообщения не вставали в очередь, а сразу же обрабатывались?

Если в resizeEvent() делать вызов qApp->processEvents() то сигналы обрабатываются. но это, имхо, шаманский бубен. и вообще говоря сигнал может прийти после того, как я вызоыву qApp->processEvents(), в этом случае сигнал будет обработан лишь при следующем входе в resizeEvent().

:: 2010.12.09, 00:11 ::
QT 4.4.3 - наблюдается такой эффект
QT 4.6.3 - вроде по отзывам нормально. буду тестировать.

:: 2010.12.09, 16:40 ::
QT 4.7.1 - все нормально. Тема закрыта.