首页 > 解决方案 > 用样式表改变paintEvent颜色?

问题描述

我正在尝试对 a 进行子类QCheckBox化以继承其行为,但对其进行子类化paintEvent以便我可以像 Android 的切换按钮一样绘制它。有没有办法让它的样式表确定它绘制的颜色?

在下面的示例中,我正在绘制一个椭圆,其颜色是我作为 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())

标签: pythonpython-2.7pyside2qtstylesheets

解决方案


正如文档指出的那样,语法是qproperty-<property name>.

MyCheckBox {qproperty-MyColor: red;}

推荐阅读