Изменить цвет paintEvent с помощью таблицы стилей? - PullRequest
1 голос
/ 21 января 2020

Я пытаюсь создать подкласс QCheckBox для наследования его поведения, но создаю подкласс для его paintEvent, чтобы я мог нарисовать его как кнопку переключения Android. Есть ли способ, позволяющий его таблице стилей определять цвет, с которым она dr aws?

В приведенном ниже примере я рисую эллипс с цветом, который я сделал как qt Property в надежде, что Я мог бы сделать что-то вроде inst.setStyleSheet("MyCheckBox {MyColor: red;}"), чтобы сделать его красным, но это ничего не делает. Возможно ли это?

from PySide2 import QtCore
from PySide2 import QtGui
from PySide2 import QtWidgets


class MyCheckBox(QtWidgets.QCheckBox):

    def __init__(self, parent=None):
        super(MyCheckBox, self).__init__(parent)

        self._myColor = QtGui.QColor(0, 255, 0)

    def myColor(self):
        return self._myColor

    def setMyColor(self, qcolor):
        self._myColor = qcolor

    MyColor = QtCore.Property(QtGui.QColor, myColor, setMyColor)

    def paintEvent(self, event):
        paint = QtGui.QPainter(self)
        paint.setBrush(self._myColor)
        paint.drawEllipse(0, 0, self.width(), self.height())

1 Ответ

3 голосов
/ 21 января 2020

Как документы указывают на синтаксис qproperty-<property name>.

MyCheckBox {qproperty-MyColor: red;}
...