使用样式表更改 paintEvent 颜色?
Change paintEvent color with stylesheet?
我正在尝试对 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())
正如 the docs 指出的语法是 qproperty-<property name>
.
MyCheckBox {qproperty-MyColor: red;}
我正在尝试对 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())
正如 the docs 指出的语法是 qproperty-<property name>
.
MyCheckBox {qproperty-MyColor: red;}