ich einige Grafikdaten bin Erstellen von Anzeigen-Widget in Qt4 und ich war die QGraphicsScene
für es zu benutzen versucht, erstellen QGraphicsItem
s für die Datenelemente usw.Wie soll ich eine QGraphicsScene mit Layout und Widgets
jedoch Ich wollte einige Ebenen von Steuerelementen hinzufügen (z. B. Bildlaufleisten, Zoom + andere Schaltflächen - ich möchte es in einem ähnlichen Stil wie z. B. Google Maps machen, das heißt, die Daten würden über das gesamte Widget angezeigt werden, und die Schaltflächen würden auf dem Widget angezeigt werden). Also dachte ich, es wäre machbar, sie der Szene hinzuzufügen (vielleicht als Kind eines QGraphicsGroupItem
, das über den Daten angezeigt würde). Aber ich möchte, dass sie sich bewegen & Größe ändern, wenn ich das gesamte Widget Größe ändern, so sollte ich eine QGraphicsLayout
für die Verwaltung von ihnen verwenden. Aber an diesem Punkt entdeckte ich, dass die Dinge ziemlich kompliziert sind.
Das Problem ist, dass, wenn QGraphicsLayout
verwenden, werden die folgenden Einschränkungen gelten:
- Nur ein
QGraphicsWidget
kann durch ein Layout verwaltet werden QGraphicsLayout
nur verwendet werden, können Kinder einQGraphicsWidget
Das bedeutet, dass ich meine Steuerelemente als QGraphicsWidget
s erstellen, eine Top-Level QGraphicsWidget
zum Daten Widget hinzufügen und verwalten würde Die Größe dieses Top-Level-Widgets selbst.
So möchte ich fragen:
Wäre kein klassischer Ansatz (dh für alle Kontrollen nur alte Widgets verwenden, und verwenden Sie
QGraphicsScene
nur für die Anzeige von Daten.) Mehr sinnvoll?Gibt es einen Vorteil bei der Verwendung
QGraphicsScene
in diesem Fall (Leistung oder Einfachheit ...)?Wie soll ich
QGraphicsScene
nutzen, um seine Stärken auszunutzen?
Das größte Problem mit QGraphicsScene ist, dass es nicht wirklich ein Widget ist. Es ist so etwas wie eine Sammlung von Elementen (wie Rechtecke, Ellipsen ...), die automatisch gezeichnet werden, gezoomt werden können. Was du beschreibst, ist die klassische, einfache alte Widget-Methode, und ich werde wahrscheinlich daran festhalten.Ich wollte die "glänzende und neue" Funktionalität verwenden, aber bei dem zweiten Gedanken sieht es für mich nicht so glänzend aus, außer jemand beweist mich falsch :) – jpalecek
jpalecek: check das "clocks" Widget demo @ http: // www.qtsoftware.com/developer/pimp-my-widgets-developer-contest .. Nichts, das auf ein Uhrwidget aber eine Implementierung für das mit QGraphics getan wird (Szene | Widget | View | Item). – rasjani
@jpalecek: Ich dachte nicht, dass eine QGraphicsScene ein Widget ist, weshalb ich sagte, dass ich "auf die eine oder andere Weise" erben soll. Aber du hast eine QGraphicsView (oder etwas ähnliches), oder? Wahrscheinlich möchtest du deine Widgets darüber setzen, außer du willst, dass sie sich mit deiner Szene transformieren. Ich denke, in diesem Fall ist der einfache alte Widget-Weg einfacher und geradliniger. –