【问题标题】:Change paintEvent color with stylesheet?用样式表改变paintEvent颜色?
【发布时间】:2020-01-21 07:12:35
【问题描述】:

我正在尝试子类化 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())

【问题讨论】:

    标签: python python-2.7 pyside2 qtstylesheets


    【解决方案1】:

    正如the docs 指出的语法是qproperty-<property name>

    MyCheckBox {qproperty-MyColor: red;}
    

    【讨论】:

    • 谢谢这很好用。您知道是否有办法为其设置自定义名称,而不是始终使用 qproperty 作为前缀?喜欢MyCheckBox {MyColor: red;}
    • @GreenCell 不,没有办法。
    猜你喜欢
    • 2013-01-14
    • 2016-08-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-18
    • 2012-02-23
    • 2015-06-09
    • 2014-02-13
    • 2022-01-23
    相关资源
    最近更新 更多