python - 用样式表改变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())
解决方案
正如文档指出的那样,语法是qproperty-<property name>
.
MyCheckBox {qproperty-MyColor: red;}
推荐阅读
- html - 如何使用 *ngFor 实现角度网格系统
- php - 阻止用户通过分页访问其他 Wordpress 帖子
- python - 无法打印出 tfrecord 功能
- yii2 - Yii2迁移一般错误:1215无法添加外键约束
- python - Selenium WebElements 难度
- reactjs - React:隐藏特定路由上的组件
- android - 无法解决:常见的Android Studio
- c# - 与 DropzoneJS 一起使用时,ASP.Net Core 2 RedirectToPage 不重定向
- javascript - 谷歌地图 - 路线服务 api ZERO_RESULTS
- java - 如何加载外部java类并调用带参数的方法