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



我希望以下代码在外部主窗口内显示一个小的黑色区域:

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

但看起来样式表并没有被应用:整个外窗口都是灰色的。但是,如果wQWidget,代码将按预期工作。当直接显示Canvas实例(没有父实例)时,样式表也会正确应用:

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

此代码显示一个黑色窗口。我在Qt4.8.6的C++中也尝试过同样的方法,样式表也适用于从QWidget派生的嵌套小部件。

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

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

试试这个:

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

最新更新