Wie halten Sie die QPen Pixelbreite beim Zoomen in einer QGraphicsView gleich?

7

Ich habe ein schnelles und fieses Programm geschrieben, um mir dabei zu helfen, einen Aspekt eines Projekts, an dem ich arbeite, zu visualisieren. Obwohl ich seit 4.1.1 mit Qt arbeite, hatte ich nie wirklich das Bedürfnis das QGraphics * Modul zu benutzen.

Als ich anfing, mit dem Programm herumzuspielen, arbeitete ich an einem alten Computer mit Windows XP und Qt4.7.0 und Visual Studio 2008. Ich habe jetzt die Datei einfach auf meinen Hauptcomputer kopiert, auf dem Windows 8 läuft. Ich habe beschlossen, Qt5 zu testen, also habe ich QtCreator mit Qt5.0.2 installiert.

Wenn ich genau den gleichen Code kompiliere, den ich auf der Maschine Qt4.7.0 / XP erstellt habe, bekomme ich ein ganz anderes Ergebnis.

Das sehe ich in meiner Kompilation Qt4.7.0:

und das sehe ich auf meiner Kompilation Qt5.0.2:

Offensichtlich gibt es ein unterschiedliches Verhalten in der Zeichnung der Ränder jedes Rechtecks. Wenn ich mit dem Mausrad zoome, wird die Rechteck-Rahmenbreite in der Qt5-Kompilierung größer, bleibt aber in der Qt4.7-Kompilation gleich (etwa 1 Pixel breit).

Wie ändere ich den Code, so dass das Verhalten in Qt5 dasselbe ist wie in Qt4.7?

Hier ist der vollständige Code:

%Vor%     
RobbieE 12.06.2013, 21:24
quelle

2 Antworten

5

Die beste Antwort wird von rpsml unter diesem gegeben. Aber aus historischen Gründen werde ich das hier lassen.

Wenn Sie die Stiftbreite auf Null setzen, wird es zu einem "kosmetischen" Stift mit einer Breite von 1.

%Vor%     
Cory Klein 12.06.2013, 21:39
quelle
24

Dies ist ein bisschen spät, könnte aber hilfreich sein.

Die vorgeschlagene Lösung funktioniert gut, begrenzt aber die Stiftbreite. Eine Alternative ist die Verwendung der Anweisung

%Vor%

Gemäß der Qt-Referenz ( Ссылка )

  

Mit Cosmetic Pens können Sie Striche zeichnen, die eine konstante Breite haben, unabhängig von Transformationen, die auf den QPainter angewendet werden, mit dem sie verwendet werden.

Und es erklärt auch, warum die Breite auf Null gesetzt wird:

  

Ein Null-Breiten-Stift ist standardmäßig kosmetisch; Stifte mit einer Breite ungleich Null sind nicht kosmetisch.

    
rpsml 19.04.2014 19:06
quelle

Tags und Links