Я использую QTableView с подклассом QItemDelegate для управления внешним видом ячеек табличного представления.
Каждая ячейка отображает имя и состояние внешнего подключенного устройства, и одновременно может быть подключено до 100 устройств.
Имя и тип каждого устройства по существу статичны, обновляются очень редко (возможно, один раз). в час), но каждая ячейка должна отображать значение ввода устройства в реальном времени, которое я сейчас опрашиваю каждые 50 миллисекунд. Это значение отображается в виде простой гистограммы, нарисованной художником, предоставленной методу Delegate :: paint () TableView.
Проблема с обновлением моей модели 20 раз в секунду заключается в том, что вся таблица перерисовывается каждый раз, что крайне неэффективно. Ограничение метода рисования только рисованием гистограммы показывает, что большая часть времени процессора посвящена рисованию имени, статуса и связанного изображения в каждой ячейке, а не графика.
Мне нужно найти способ регулярно обновлять график для каждой ячейки, не перерисовывая ячейку, но я не могу понять, как это сделать.
Каков наиболее эффективный способ достижения этого?
Изменить: изображение, прикрепленное к справке.
Изображение представляет 10 датчиков в QTableView. Номер, имя и статус практически неизменны и почти не обновляются. Гистограмма рядом с текстом «Значение датчика» обновляется каждые 50 мс. Я хочу нарисовать только эту полосу, а не текст, статус и фон ячейки. Индикаторы состояния и фон представляют собой сложные изображения, поэтому они требуют гораздо больше процессорного времени, чем простое рисование и заполнение прямоугольника.