Hier sind zwei QWidget
schwarz lackiert. Das Gemälde links QWidget
wurde unter Verwendung von QPainter
(überschreiben ::paintEvent(...)
) durchgeführt. Das richtige Widget wurde mit QStyleSheet
"gemalt".Qt Antialiasing mit QPainter im Vergleich zu QStyleSheets
Diese Arbeit wurde in PyQt4 (Python: 2.7.11+/Qt: 4.8.7/PyQt4: 4.11.4
) durchgeführt. Aber Sie haben das gleiche Ergebnis mit PyQt5 und C++ Qt4/Qt5 erreicht.
Der Code, den ich die linke QWidget
zu malen verwendete
def paintEvent(self, pEvent) :
painter = QPainter(self)
painter.setRenderHints(QPainter.HighQualityAntialiasing)
painter.setPen(Qt.black)
painter.setBrush(Qt.black)
painter.drawRoundedRect(self.rect(), 10.0, 10.0)
painter.end()
pEvent.accept()
Das Stylesheet auf der rechten Widget verwendet
setStyleSheet("border-radius: 10px; border: 1px solid black; background: black;")
ist Warum gezogen den beiden gibt es einen Unterschied zwischen, vor allem die Rundung von QStyleSheet
viel glatter als die von QPainter
trotz Verwendung QPainter.HighQualityAntialiasing
Render-Hinweis getan? Sie könnten nur QPainter.Antialiasing
oder QPainter.TextAntialiasing
verwenden und trotzdem verbessert sich die Situation nicht.
Nein. Ich denke, dass die Standardbreite 1 ist. Auch hilft das Einstellen mit nichts anderem. Versuchte Breite 0 und 2. Absolut keine Änderung. – Marcus
Tatsächlich gibt sogar dieser Code, den Sie vorschlagen, das gleiche Ergebnis. Hier ist der Screenshot der Implementierung: http://i.imgur.com/ylK0YkH.jpg – Marcus