Эффективное обновление QTableView на высокой скорости

Я использую QTableView с подклассом QItemDelegate для управления внешним видом ячеек табличного представления.

Каждая ячейка отображает имя и состояние внешнего подключенного устройства, и одновременно может быть подключено до 100 устройств.

Имя и тип каждого устройства по существу статичны, обновляются очень редко (возможно, один раз). в час), но каждая ячейка должна отображать значение ввода устройства в реальном времени, которое я сейчас опрашиваю каждые 50 миллисекунд. Это значение отображается в виде простой гистограммы, нарисованной художником, предоставленной методу Delegate :: paint () TableView.

Проблема с обновлением моей модели 20 раз в секунду заключается в том, что вся таблица перерисовывается каждый раз, что крайне неэффективно. Ограничение метода рисования только рисованием гистограммы показывает, что большая часть времени процессора посвящена рисованию имени, статуса и связанного изображения в каждой ячейке, а не графика.

Мне нужно найти способ регулярно обновлять график для каждой ячейки, не перерисовывая ячейку, но я не могу понять, как это сделать.

Каков наиболее эффективный способ достижения этого?

Изменить: изображение, прикрепленное к справке.

Изображение представляет 10 датчиков в QTableView. Номер, имя и статус практически неизменны и почти не обновляются. Гистограмма рядом с текстом «Значение датчика» обновляется каждые 50 мс. Я хочу нарисовать только эту полосу, а не текст, статус и фон ячейки. Индикаторы состояния и фон представляют собой сложные изображения, поэтому они требуют гораздо больше процессорного времени, чем простое рисование и заполнение прямоугольника.

alt text

8
задан Dani 22 September 2010 в 15:01
поделиться