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

Alles rund um die Programmierung mit Qt
Antworten
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

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

Beitrag 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
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag 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?
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

Beitrag 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
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

Beitrag von goofy »

Schade das mit QCanvas hat sich wohl erledigt ist Qt3 verwender Qt4.
goofy
Beiträge: 38
Registriert: 4. April 2006 15:40

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

Beitrag 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
lepsai
Beiträge: 573
Registriert: 14. September 2004 21:33
Wohnort: Berlin
Kontaktdaten:

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