嵌套自定义小部件的样式表未应用

5
我期望以下代码在主窗口之内显示一个小的黑色区域:
class Canvas(QWidget):
    pass

app = QApplication(sys.argv)
outer = QWidget()
w = Canvas(outer)
w.setStyleSheet("background-color: black")
outer.show()

但是看起来样式表没有应用:整个外部窗口都是灰色的。 但是,如果w是一个QWidget,那么代码的运行结果符合预期。当Canvas实例直接显示时(没有父级),样式表也会被正确应用:

w = Canvas()
w.setStyleSheet("background-color: black")
w.show()

这段代码展示了一个黑色的窗口。我曾经在使用Qt 4.8.6和继承自QWidget的嵌套小部件时也尝试过同样的操作,并且样式表也被正确应用。

我错过了什么?我正在Ubuntu 14.04下使用Python 2.7.6,Qt 4.8.6和PyQt 4.10.4。

1个回答

9

默认情况下,QWidget的子类会忽略样式表(出于性能原因)。

尝试使用以下代码:

w = Canvas(outer)
w.setAttribute(QtCore.Qt.WA_StyledBackground)
w.setStyleSheet("background-color: black")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接