2016-07-08 16 views
4

Was ist der effektivste Weg, um "Canvas" mit hoher Änderungshäufigkeit in Qt zu erstellen?Der beste Weg für veränderbare Qt-Canvas

Zur Zeit habe ich ein Hauptfenster (QWidget), wo ich eine QPixmap erstellen und an einen QLabel gesetzt:

QPixmap *canvas = new QPixmap(500, 500); 
QLabel *area = new QLabel(this); 
area->setPixmap(canvas); 

Das Problem ist, dass ich area->setPixmap(canvas); nach jeder Änderung verlangen ich auf dem pixmap machen so dass es angezeigt werden kann (ich zähle, dass es normalerweise jede Sekunde einige Änderungen geben wird). Ist das ok? Oder gibt es eine bessere/schnellere/effizientere Lösung?

+0

Was zeichnen Sie auf der Leinwand? – peppe

+0

@peppe Meistens Text. –

+1

Ein QGraphicsScene mit einigen QGraphicsItems kann mehr Sinn ergeben, besonders wenn es sich um inkrementelle Änderungen handelt und nicht alles bei jedem Update geändert wird. – PeterT

Antwort

2

PeterT und Jeremy haben beide gute Lösungen. Welche davon am besten ist, hängt von Ihren Bedürfnissen ab.

Wenn Sie Objekte verschieben und ändern, verwenden Sie eine QGraphicsScene, um die Daten zu speichern, die Sie anzeigen möchten, und bearbeiten Sie sie einfach. Verwenden Sie eine QGraphicsView, um das Ergebnis anzuzeigen.

Wenn Sie bereits die Wiedergabe an anderer Stelle als QPixmap tun und wollen einfach nur das Ergebnis zu ziehen, Subklassen QWidget und es in der paintEventQPainter mit Zeichen kann einfacher sein. Denken Sie daran, rufen Sie update(), obwohl!

Verwandte Themen