Ich versuche, meine benutzerdefinierte Schaltfläche mit den Abmessungen 20x20 Pixel zu zeichnen. Ich habe eine Klasse, die QPushButton erbt, und ich habe unten mit diesem Code paintEventO Methode überschrieben:PySide QPainter.drawRect() mit QBrush Offset Ausgabe
painter = QtGui.QPainter(self)
x = self.rect().x()
y = self.rect().y()
width = self.rect().width()
height = self.rect().height()
painter.setBrush(QBrush(QColor(170, 97, 112)))
painter.drawRect(x, y, width, height)
Und das ist, was ich (in Photoshop bearbeitet) erhalten:
Sie können deutlich sehen, 1 Pixel Offset sowohl in x, als auch in y Dimensionen oben links.
Ich habe mich gefragt, warum das passiert. Ich kann das loswerden, indem ich 1 Pixel aus x und y extrahiere und 1 Pixel zu Breite und Höhe addiere, so dass ihr Wert lautet: x = -1; y = -1; Breite = 21; Höhe = 21.
Aber das fühlt sich einfach komisch an. Ich weiß nicht, ob das ein Problem mit Qt ist (oder vielleicht nur PySide) oder ich verstehe etwas nicht.
Sie feststellen, dass Ihre benutzerdefinierten Druckknopf 20x20 Größe ist noch das Bild über ein Rechteck 22x22 zeigt. Welcher Teil des obigen Bildes ist eigentlich * dein * Druckknopf? –
@ G.M. Nein, es ist tatsächlich 20x20. Ich habe den Knopf mit einem roten Pinsel markiert (von 0 bis 20). Das Bild selbst ist so abgeschnitten. Entschuldigung, wenn das in irgendeiner Weise verwirrend ist. – Makal