如何使用自定义QGraphicsItem的样式表

时间:2014-01-18 23:01:13

标签: python qt pyqt pyside

我正在尝试如何从样式表中获取属性以在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。还有另一种方式吗?

0 个答案:

没有答案