Seite 1 von 1

[qt 4] QWidget drehen 90, 180, 270 Grad

Verfasst: 12. Mai 2006 10:32
von goofy
Hallo zusammen,

versuch ein widget zu drehen ...

Also hab ein QWidget, in dem ich mit paintEvent() ein Rechteck mit
der Mause aufziehen kann. So weit so gut ....

Will ich jetzt das Ganze um 90, 180 oder 270 grad drehen, während das rechteck angezeigt wird, bekomm ich ein paar probleme ...

Momentan dreh ich nur den QPainter, der das Rechteck zeichnet. Das funktioniert auch ganz gut.
Falls das Rechteck schon gezeichnet ist und es wird gedreht dann wird es wieder an der richtigen stelle angezeigt.

So will ich aber das Rechteck, bei gedrehtem QPainter neu aufziehen oder vergrößer, ist alles verdreht :D
Äh also, das Koordinatensystem des QWidget und des QPainter haben keinen konsitenten Zustand mehr.
-> die Koordinaten bei einem Mausclick im Widget sind noch bei einer Drehung von 0 Grad und der QPainter malt dann in der richtigen Drehung.

Kann man ein Widget drehen, samt seinem Painter? Es würde mir auch reichen nur das Koordinatensystem zu verändern.

Oder sollte ich den Painter drehen und die Punkte bei Mausklick etc. dann mappen? Aber wie?

thx

goofy

Verfasst: 12. Mai 2006 12:22
von FlorianBecker
Ich als nicht unbedingt Painting Spezialist würde sagen, nimmst QCanvas und drehst das. Das sollte wesentlich einfacher sein. Aber vielleicht bekommst ja noch eine bessere Lösung von einem anderen Mitglied hier. Wozu genau willst du das drehen? Bzw. was wird es für ein Endergebnis geben?

Verfasst: 12. Mai 2006 12:59
von goofy
Danke,

Ich markiere ja was, genauer gesagt einen VideoStream. Diesen Stream kann man drehen und meine Markierung sollte ja immer an der gleichen Stelle sein.

Am liebsten wäre mich halt einfach ALLES zu drehen dann muss ich auch nicht dumm die Koordinaten umrechnen. Da ich die Koordinaten dieser Markierung weiter gebe und dort ist das Ganze nicht gedreht.

Ist irgendwie ein verdrehtes MVC Problem :D
oh man mein Kopf wird schon ganz weich .....

thx

goofy

edit: das mit QCanvas werd ich mal anschaun

Verfasst: 12. Mai 2006 13:08
von goofy
Schade das mit QCanvas hat sich wohl erledigt ist Qt3 verwender Qt4.

[gelöst] [qt 4] QWidget drehen 90, 180, 270 Grad

Verfasst: 12. Mai 2006 15:28
von goofy
Hallo,

habs aus eigener Kraft geschafft.

Mach das jetzt wie folgt:

- Grad einstellen
- QPainter entsprechend drehen, d.h. das Koordinatensystem wird gedreht.
- beim Mausklick etc. entsprechend für Gradzahl die Koordinaten umrechnen

Musste zwar die Koordinaten umrechnen aber es funktioniert wunderbar.

Vorteil, da der QPainter samt koordinatensystem gedreht wird kann ich die berechneten koordinaten der markierung einfach übergeben.

grüße
goofy

Verfasst: 15. Mai 2006 08:56
von lepsai
Eigentlich kann man das einheitlich machen, indem man eine Transofrmationsmatrix definiert (QWMatrix). Dann hättest du nicht nur rotieren sodern auch andere wilde Sachen mit deinem Videostream anstellen können...