Hallo zusammen
Wollte mal meine erste "App" für mein Symbian basiertes Handy von Nokia
programmieren. Kenne mich zwar sehr gut in C für Mikrocontroller aus,
aber C++ und Qt sind neu für mich. Jedenfalls läuft inzwischen schon
einiges, aber komme mit QGraphicsScene und QGraphicsView überhaupt nicht
klar.
Was ich machen will:
In einem balkenförmig angezeigten QGraphicsView soll als Hintergrund ein
Farbverlauf rot...grün...rot erscheinen. Dann will ich darauf (im
Vordergrund) einen Kreis einzeichnen um eine Stelle zu markieren.
Code:
Den Hintergrund habe ich folgendermassen hingekriegt und erscheint
soweit wie ich es haben möchte:
Scene erstellen und zuweisen
Eigentlich will ich, dass die "scene" genau so gross ist wie das "view"
und wenn ich etwas zeichne, dass sich der Hintergrund nicht verschiebt.
In den Dokus steht zwar so einiges drin, aber ich verstehe den
Zusammenhang und die verschiedenen Koordinatensysteme nicht.
Kann mir jemand einen Tipp geben, wie ich das hinbekomme?
Danke
Hallo,
es ist auf jeden Fall sinnvoll, wenn du zuerst einmal eine definierte
Zeichenfläche erstellst. Also der "scene" eine für deine Anwendung
sinnvolle Größe zuweist. Somit kannst du in einem festen
Koordinatensystem zeichnen und die Darstellung in der "GrapphicsView"
dann ggf. über die Transformationsmatrix anpassen.
Das Ganze sieht dann ungefähr so aus (Bild dazu im Anhang):
Hey vielen Dank, hast mir sehr geholfen!
Das Problem war wirklich, dass der "scene" nicht die gewünschte Grösse
zugewiesen wurde.
Da es auch beim rotieren des Gerätes richtig angezeigt werden soll, habe
ich es nun folgendermassen gelöst und wird im paintEvent abgehandelt:
Johnny B. schrieb:> Um die Katze noch aus dem Sack zu lassen, habe ich noch ein Screenshot> angefügt wo man sehen kann, was das ganze werden soll wenn es fertig> ist...
Hmm, und für diesen kleinen Balken mit dem Klecks drin hast du extra
eine QGraphicsView und eine QGraphicsScene verwendet? Das klingt aber
auch nach dem berühmten mit-Kanonen-auf-Spatzen-Schuss.
Das ist mein erstes Qt Programm und QGraphicsView war das einzige aus
der Toolbox von Qt Creator, was mir einigermassen angemessen schien um
darin herumzuzeichnen.
Aber Du hast natürlich schon recht, um das Potential auch nur
ansatzweise zu nutzen, sollte ich da schon noch was animieren und sich
bewegen lassen.
Jedenfalls bin ich froh, dass es nun einigermassen so aussieht wie ich
mir das gewünscht hatte und Geschwindigkeitsmässig kann ich auf dem
Handy keine Performanceeinbussen feststellen.
Was könntest Du denn als einfachere Alternative empfehlen?
Johnny B. schrieb:> Das ist mein erstes Qt Programm und QGraphicsView war das einzige aus> der Toolbox von Qt Creator, was mir einigermassen angemessen schien um> darin herumzuzeichnen.> Aber Du hast natürlich schon recht, um das Potential auch nur> ansatzweise zu nutzen, sollte ich da schon noch was animieren und sich> bewegen lassen.
QGraphicsScene ist vor allem gut geeignet, wenn du viele Objekte
zeichnen und komfortabel in der Szene verwalten willst, mit Zoom und
klickbaren Objekten u.s.w.
> Was könntest Du denn als einfachere Alternative empfehlen?
Von QWidget ableiten und den Kreis selber im paintEvent() malen. Das ist
auch nicht schwierig.