在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就像其他对象上的魅力一样。
答案 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()