我正在尝试如何从样式表中获取属性以在QGraphicsItem的paint函数中使用它。
我以前使用自定义QWidgets的自定义css属性,使用与下面代码相同的方法。但是从不调用set_background_color
函数。是否有解决方法或任何其他方式为QGraphicsItem使用样式表?
from PySide import QtCore
from PySide.QtGui import QGraphicsRectItem, QColor, QBrush
class NodeItem(QGraphicsRectItem):
background_color_value = QColor()
def __init__(self, *args, **kwargs):
super(NodeItem, self).__init__(*args, **kwargs)
def paint(self, painter, style, *args, **kwargs):
print(self.get_background_color())
brush = QBrush(self.get_background_color())
painter.setBrush(brush)
painter.drawRoundedRect(-10, -10, 20, 20, 5, 5)
def get_background_color(self):
return self.background_color_value
def set_background_color(self, color):
self.background_color_value = color
background_color = QtCore.Property(QColor, get_background_color, set_background_color,
designable=True, scriptable=True)
修改 这就是样式表的样子:
NodeItem {
qproperty-background_color: #dd9900;
}
显然它不起作用,因为QGraphicsRectItem不继承QObject。还有另一种方式吗?