J'utilise un QTableView avec une sous-classe de QItemDelegate pour contrôler l'aspect et la convivialité des cellules de tableview. Chaque cellule affiche le nom et l'état d'un périphérique connecté en externe, et jusqu'à 100 périphériques peuvent être connectés en même temps. Le nom et le type de chaque périphérique sont essentiellement statiques, mis à jour très rarement (peut-être une fois par heure), mais chaque cellule doit afficher une valeur en temps réel de l'entrée du périphérique, que je scrute toutes les 50 millisecondes. Cette valeur est affichée sous la forme d'un graphique à barres basique dessiné par le peintre fourni à la méthode Delegate :: paint() par TableView.Mise à jour efficace d'un QTableView à haute vitesse
Le problème avec la mise à jour de mon modèle 20 fois par seconde est que la table entière est redessinée à chaque fois, ce qui est très inefficace. Limiter la méthode de peinture à dessiner uniquement le graphique à barres montre que la plus grande partie du temps processeur est dédiée au dessin du nom, de l'état et de l'image associée sur chaque cellule, plutôt que sur le graphique. Ce que j'ai besoin de trouver est un moyen de mettre à jour le graphique pour chaque cellule régulièrement sans redessiner la cellule, mais je ne peux pas savoir comment le faire.
Quel est le moyen le plus efficace d'y parvenir?
Éditer: Image jointe pour aider.
L'image représente 10 capteurs dans un QTableView. Le numéro, le nom et le statut sont pratiquement statiques, ne se mettant presque jamais à jour. Le graphique à barres à côté du texte "Valeur du capteur" est mis à jour toutes les 50ms. Je veux seulement peindre cette barre, plutôt que le texte, le statut et l'arrière-plan de la cellule. Les voyants d'état et l'arrière-plan sont des images complexes, il faut donc beaucoup plus de temps processeur que de simplement dessiner et remplir un rect.
Le statut doit-il être dans le même widget que tout le reste? Ma première pensée serait de coller un ListView du même modèle à côté de lui. –
Oui, malheureusement, c'est le cas. Chaque appareil a un certain nombre de paramètres qui doivent être à côté du graphique.J'ai pensé à deux points de vue, peut-être superposés, mais cela semble être une manière très désordonnée de réaliser ce que je veux, et cela rend plus difficile la modification de modèles, l'édition, etc. – Dani