События обновления QWidget, но без визуального обновление

Используя Qt4.8 на Mint Linux 12, я реализовал простое окно, содержащее QTableViewдля отображения содержимого модели. Данные модели постоянно обновляются (сообщения журнала), а сигнал dataChanged()генерируется на регулярной основе (то есть каждые 100 мс).

Проблема, которую я вижу, заключается в заикании визуальных обновлений на столе.

Я установил фильтр событий в окно, которое подсчитывает события типа updateRequest, которые должны инициировать перерисовку виджета (также для дочерних виджетов, то есть tableView). Они приходят со средним временем ~ 170 мс между ними и стандартным отклонением ~ 90 мс (что, я думаю, довольно велико). Однако воспринимаемая частота обновления изображения составляет всего два или три раза в секунду, и мне интересно, почему. Похоже, что не все события updateRequestвызывают перерисовку виджета или что оконная система проглатывает визуальные обновления.

В качестве второго теста я заставил окно обновляться, вызывая repaintили updateкаждые 100 мс. Используя repaint, я увидел соответствующее увеличение updateRequestсобытий типа и уменьшение стандартного отклонения пробелов; с updateчисло не увеличилось. Однако в обоих случаях наблюдалось лишь умеренное увеличение воспринимаемой частоты обновления.

Кроме того: есть ли хороший способ измерить, как часто виджет действительно перерисовывается без необходимости перегружать его обработчик paintEvent? Может что-то из QTest?


Обновление:Я расширил свой фильтр событий, чтобы он также улавливал события типа paintEvent. Есть только однозначное число таких событий по сравнению с > 1000 updateRequestсобытий типа.

6
задан arne 12 June 2012 в 14:27
поделиться