使用css类和setProperty()

时间:2015-12-09 09:32:14

标签: css qt pyqt4

在QWidget的子类中:

class MainWidget(QtGui.QWidget):

    def __init__(self, *args):
        QtGui.QWidget.__init__(self, *args)
        ...
        self.setStyleSheet(stylesheet)

使用此css工作得很好:

QWidget {
    background-color: black;
}

但添加了这个:

self.setStyleSheet(stylesheet)
self.setProperty('class', 'main')

并将css更改为:

QWidget.main {
    background-color: black;
}

完全没有效果。我错过了什么? setProperty就像其他对象上的魅力一样。

1 个答案:

答案 0 :(得分:1)

如果您从QWidget继承自定义窗口小部件,那么为了使用StyleSheets,您需要向自定义窗口小部件提供paintEvent。请参阅this page

因此,请将以下方法添加到MainWidget类:

def paintEvent(self, event):
    "Reimplementation of paintEvent to allow for style sheets"
    opt = QtGui.QStyleOption()
    opt.initFrom(self)
    painter = QtGui.QPainter(self)
    self.style().drawPrimitive(QtGui.QStyle.PE_Widget, opt, painter, self)
    painter.end()