Не удается перерисовать виджет Qt при определенных условиях - PullRequest
2 голосов
/ 25 августа 2011

У меня странная проблема с виджетом, который долго не перерисовывался.

У меня есть один не-Qt-поток, который воспроизводит аудио и периодически отправляет пользовательское событие в мой поток GUI, основанный на аудиопозиция воспроизведения.Поток GUI реагирует, генерируя некоторую визуальную обратную связь (например, отображаемую метку поверх виджета) и вызывая repaint () для себя.Это прекрасно работает на Mac OSX и прекрасно работает в моем приложении для модульного тестирования, которое выполняет функции в Windows (XP & 7), однако виджет не перерисовывается должным образом в моем реальном приложении в Windows XP / 7, покавоспроизведение аудио завершено.

Правильное поведение наблюдается на OSX и в моем модульном тесте:

-> Custom Event
-> QEvent::Paint (12)
-> Custom Event
-> QEvent::Paint (12)
etc.

В моем реальном приложении наблюдается неправильное поведение:

-> Custom Event 
-> QEvent::UpdateRequest (77)
-> Custom Event  
-> QEvent::UpdateRequest (77)
etc.
-> QEvent::Paint (12)

Я пыталсяразличные вещи, чтобы заставить перерисовку происходить, например, QCoreApplication :: processEvents, но все безрезультатно.Я также пытался исключить события между потоками как виновника и использовал периодический таймер для опроса текущей позиции звука из потока GUI и обновления виджета, также без особой удачи.

Любые идеи о том, как продолжитьпоставьте диагноз, это будет с благодарностью!

1 Ответ

0 голосов
/ 25 августа 2011

Вы пытались вызвать обработчик события рисования напрямую? т.е. paintEvent(NULL)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...