QGraphicsItem vs QGraphicsObject -> Performance?

Alles rund um die Programmierung mit Qt
Antworten
mikemc
Beiträge: 42
Registriert: 11. Februar 2009 15:27

QGraphicsItem vs QGraphicsObject -> Performance?

Beitrag 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
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
mikemc
Beiträge: 42
Registriert: 11. Februar 2009 15:27

Beitrag von mikemc »

Eigentlich brauch ich QAction im Item selber, habe es aber bis jetzt im QMainWindow erstellt.

Wo würdest du QAction lagern?

lg
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Re: QGraphicsItem vs QGraphicsObject -> Performance?

Beitrag 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.
Antworten