Kup*_*nu4 3 css qt stylesheet background-color pyside
我正在尝试设置小部件的背景颜色,但它仅适用于小部件的孩子。下面的代码是真实应用程序结构的简单表示。我希望 testWidget 完全是红色的,由于它的大小,它是 100x100 像素的矩形,但由于某种原因,只有按钮是红色的。
from PySide import QtGui
class Widget(QtGui.QWidget):
def __init__(self):
    QtGui.QWidget.__init__(self)
    mainLayout = QtGui.QVBoxLayout(self)
    testWidget = QtGui.QWidget()
    testWidget.setFixedSize(100,100)
    testWidget.setStyleSheet('background-color: red;')
    testLayout = QtGui.QVBoxLayout()
    testWidget.setLayout(testLayout)
    but = QtGui.QPushButton('TEST')
    but.setFixedSize(20,20)
    testLayout.addWidget(but)
    mainLayout.addWidget(testWidget)
w = Widget()
w.show()
默认情况下, aQWidget不填充其背景。您可以使用 aQFrame代替或将 的WA_StyledBackground属性设置QWidget为 True 如下所述:   PySide: QWidget does not draw background color。
要将样式表仅应用于容器而不应用于其子项,可以命名容器小部件,并且可以通过引用其名称将样式表专门应用于它。
下面是从您的代码派生的 MWE,它显示了如何使用 QFrame 而不是 QWidget 来完成它:
from PySide import QtGui
import sys
class Widget(QtGui.QWidget):
    def __init__(self):
        QtGui.QWidget.__init__(self)
        mainLayout = QtGui.QVBoxLayout(self)
        testWidget = QtGui.QFrame()
        testWidget.setFixedSize(100,100)
        testWidget.setObjectName("myWidget")
        testWidget.setStyleSheet("#myWidget {background-color:red;}") 
        testLayout = QtGui.QVBoxLayout()
        testWidget.setLayout(testLayout)
        but = QtGui.QPushButton('TEST')
        testLayout.addWidget(but)
        mainLayout.addWidget(testWidget)
if __name__ == '__main__':
    app = QtGui.QApplication(sys.argv)
    instance_1 = Widget()
    instance_1.show()
    sys.exit(app.exec_())
这导致: