Seite 1 von 1
QGraphicsItem vs QGraphicsObject -> Performance?
Verfasst: 10. Februar 2010 18:58
von mikemc
Hallo ihr,
gibt es einen wesentlichen Unterschied ob ich QGraphicsItem oder QGraphicsObject verwende? In meiner QGraphicsScene können u.U. bis zu ca. 2000 verschiebbare Objekte sein.
Aktuell möchte ich ein gemeinsames Kontextmenü für alle Items erstellen. Soll ich QAction lieber ausserhalb erstellen oder kann ich das ruhig in jedem Item einzeln machen?
lg Michi
Verfasst: 11. Februar 2010 07:31
von upsala
Der wesentliche Unterschied dürfte der Speicherbedarf sein (Deswegen hat ein QGraphicsItem auch standardmäßig keine QObject-Ableitung. Steht auch irgendwo in der Doku).
Von der Geschwindigkeit her dürfte kein Unterschied sein.
Und wo du dein QAction erstellt hängt doch von deinem Anwendungsfall ab. Aber ich würde defaultmäßig keine 2000 QActions erstellen.
Verfasst: 11. Februar 2010 11:19
von mikemc
Eigentlich brauch ich QAction im Item selber, habe es aber bis jetzt im QMainWindow erstellt.
Wo würdest du QAction lagern?
lg
Re: QGraphicsItem vs QGraphicsObject -> Performance?
Verfasst: 11. Februar 2010 14:40
von franzf
mikemc hat geschrieben:Aktuell möchte ich ein gemeinsames Kontextmenü für alle Items erstellen. Soll ich QAction lieber ausserhalb erstellen oder kann ich das ruhig in jedem Item einzeln machen?
Höh? Die QAction* kommen lokal in die QGraphicsItem::contextMenuEvent(). Jedenfalls ist das die Methode, wie sie in der Doku zu genannter Funktion exemplarisch angeführt ist.
menu.exec() liefert dir dann die gewählte QAction. Kannst also sogar auf connects verzichten!
QGraphicsObject macht sinn, wenn das QGraphicsItem selber SIGNALS aussenden soll und per SLOTS steuerbar sein soll. Auch Properties gehen nicht ohne Q_OBJECT, was ein QGraphicsItem nicht per QPropertyAnimation animierbar macht.