gekrümmte Balkenanzeige mit QPainterPath

Alles rund um die Programmierung mit Qt
Antworten
Abayo
Beiträge: 25
Registriert: 18. Mai 2013 12:25

gekrümmte Balkenanzeige mit QPainterPath

Beitrag von Abayo »

Hi @ all :)

Ich möchte für meine GUI eine Art Balkenanzeige zeichnen und weiß nicht so recht wie ich da am besten vorgehen sollte..
Deswegen hoffe ich hier auf die Hilfe von ein paar erfahrenen QT-Künstlern :D

Erstmal zum Program:
Ich verwende ein QGraphicsView mit Scene in dem ich ein QGraphicsObject anzeige. In der paint und boundingRect funktion dachte ich mir die Funktion der Anzeige zu verwirklichen.
Ein QGraphicsObject deswegen, da ich darin zeichnen und den Signal und Slot Mechanismus verwenden kann.
Die Anzeige bekommt dann Füllwerte übergeben (zwischen 0 und 100 oder so) und füllt dann den Balken aus.

Soweit die Architektur. Hier noch eine Skizze wie ich mir die Balkenanzeige gedacht hatte:
Bild

Was ich mir bisher überlegt hatte:
die shape()-funktion benutzen und die äußere Form über QPainterPath vorgeben -> welche Formen kombinieren? unterer Rand könnte mit einem Rechteck gehen von dem eine Ellipse und ein Rechteck subtrahiert werden. Aber oben?
"Fülllevel" anzeigen indem die shape gefüllt und ein Rechteck darüber gelegt wird. Je nach Füllstand könnte man das Rechteck nach rechts verschieben und von der Füllung wieder mehr anzeigen. Aber in der Kurve ist das Problem das der Füllstand immer im rechten Winkel zum Rand stehen sollte, also bei "0" nach oben schaut und bei "100" nach rechts. Dazu dachte ich mir ein 2tes Rechteck darüberzulegen, welches mit dem Fülllevel rotiert wird um die richtige ausrichtung zu erhalten und dann zusammen mit dem 1sten Rechteck verschoben wird.

Ich bin mir allerdings nicht sicher ob dieser Ansatz was taugt oder zum scheitern verdammt ist..
Was würde euch dazu einfallen / wie würdet Ihr dafür vorgehen?

Für Ideen und Anregungen wäre ich sehr dankbar!
veeman
Beiträge: 280
Registriert: 3. Oktober 2012 01:43
Kontaktdaten:

Re: gekrümmte Balkenanzeige mit QPainterPath

Beitrag von veeman »

Dafür kannst du die Funktionen von QPainterPath verwenden um dein Bild als Vektorpfad zu zeichnen.
Funktionen wie moveTo, lineTo, arcMoveTo, cubicTo und closeSubpath sollten dir helfen deine Form zu definieren.

Wenn du zwei solcher Pfad definierst, einmal für den Hintergurndanzeige und einmal für die Füllstandsanzeige, hast du dein Ziel erreicht.

Die Füllstandsanzeige kannst du mittels der Funktion intersected rausrechnen in dem du, wie du schon gesagt hast ein Pfad definierst der die Grenze bestimmt.
Für letzteres würde ich ein Dreicker/Rechteck nehmen welches eine Seite hat die vom linken unteren rand über denn linken oberen bis hin zum rechten oberen rand wandert.
Abayo
Beiträge: 25
Registriert: 18. Mai 2013 12:25

Re: gekrümmte Balkenanzeige mit QPainterPath

Beitrag von Abayo »

hi veeman

das ist eine gute Idee, gerade das mit dem Rechteck/Dreieck gefällt mir.
die moveto, arcto, usw funktionen muss ich mal testen.. beim letzten mal ging das gründlich in die Hose^^

Aber auch dazu habe ich schon eine Idee :D

Thx soweit erstmal!
Antworten