Effizientes Aktualisieren eines QTableView mit hoher Geschwindigkeit

Ich verwende QTableView mit einer Unterklasse von QItemDelegate, um das Erscheinungsbild der Zellen der Tabellenansicht zu steuern.

Jede Zelle zeigt den Namen und den Status eines extern angeschlossenen Geräts an und es können bis zu 100 Geräte gleichzeitig angeschlossen werden.

Der Name und der Typ jedes Geräts sind im Wesentlichen statisch und werden nur sehr selten (möglicherweise einmal pro Stunde) aktualisiert. In jeder Zelle muss jedoch ein Echtzeitwert der Geräteeingabe angezeigt werden, den ich derzeit alle 50 Millisekunden abfrage. Dieser Wert wird als einfaches Balkendiagramm angezeigt, das vom Painter gezeichnet wurde und von der TableView für die Methode Delegate :: paint () bereitgestellt wurde.

Das Problem beim 20-maligen Aktualisieren meines Modells besteht darin, dass jedes Mal die gesamte Tabelle neu gezeichnet wird, was sehr ineffizient ist. Wenn Sie die Zeichenmethode auf das Zeichnen nur des Balkendiagramms beschränken, wird angezeigt, dass der Großteil der CPU-Zeit dem Zeichnen des Namens, des Status und des zugehörigen Bilds in jeder Zelle und nicht dem Diagramm gewidmet ist.

Was ich finden muss, ist eine Möglichkeit, das Diagramm für jede Zelle regelmäßig zu aktualisieren, ohne die Zelle neu zu zeichnen, aber ich kann nicht herausfinden, wie es geht.

Was ist der effizienteste Weg, dies zu erreichen?

Bearbeiten: Bild zur Hilfe angehängt.

Image repräsentiert 10 Sensoren in einer QTableView. Die Nummer, der Name und der Status sind praktisch statisch und werden so gut wie nie aktualisiert. Das Balkendiagramm neben dem Text "Sensorwert" wird alle 50 ms aktualisiert. Ich möchte nur diese Leiste zeichnen, nicht den Text, den Status und den Zellenhintergrund. Die Statusanzeigen und der Hintergrund sind komplexe Bilder. Sie benötigen also viel mehr CPU-Zeit als nur ein Rechteck zu zeichnen und zu füllen.

Antworten auf die Frage(6)

Ihre Antwort auf die Frage