设置布局的背景颜色

问题描述 投票:0回答:2

由于布局对象没有属性“.setStyleSheet()”,如何为给定布局设置背景颜色?

作为视觉解释,我可以设置标签和按钮背景颜色,但不能设置整个布局,包括间隔符。

enter image description here

以编程方式,我正在水平布局中组织一些信息并将它们显示在框架中。 我想为每个循环替换背景颜色。

for param_name in parameters:
    hlayouts.append(QtGui.QHBoxLayout())
    labels.append(QtGui.QLabel("%s"%param_name))
    sliders.append(QtGui.QSpacerItem(10,10,hPolicy=QtGui.QSizePolicy.Expanding))
    spins.append(QtGui.QDoubleSpinBox())

    spins[index].setValue(float(values.get(param_name)))
    labels[index].setStyleSheet("background-color:black;")
    spins[index].setStyleSheet("background-color:black;")

    hlayouts[index].addWidget(labels[index])
    hlayouts[index].addItem(sliders[index])
    hlayouts[index].addWidget(spins[index])

    index += 1

vlayout = QtGui.QVBoxLayout()
for i in range(len(hlayouts)):
    vlayout.addLayout(hlayouts[i])
python qt pyqt qtstylesheets qlayout
2个回答
15
投票

您可以在空的 QWidget 上添加设置布局并在此小部件上设置样式表。

for index, param_name in enumerate(parameters):
    container = QtGui.QWidget(self)
    layout = QtGui.QHBoxLayout(container )

    hlayouts.append(container)
    labels.append(QtGui.QLabel("%s"%param_name))
    sliders.append(QtGui.QSpacerItem(10,10,hPolicy=QtGui.QSizePolicy.Expanding))
    spins.append(QtGui.QDoubleSpinBox())

    spins[index].setValue(float(values.get(param_name)))
    container.setStyleSheet("background-color:black;")

    layout.addWidget(labels[index])
    layout.addItem(sliders[index])
    layout.addWidget(spins[index])


vlayout = QtGui.QVBoxLayout(self)
for widget in hlayouts:
    vlayout.addWidget(widget)

0
投票

Layout 没有参数来获取颜色。

使用

setStyleSheet('background-color:black;')
设置样式表是个坏主意,因为它会绘制小部件内的所有项目。但是,如果您想绘制特定的小部件背景,则仅使用此功能,您的布局可以添加到该小部件中:

QWidget *widget = new QWidget(); // new widget
QPalette palette = QWidget::palette(); // application palette

QColor backColor = QColor(0, 0, 0);
backColor.setAlpha(20);

palette.setColor(QPalette::Window, backColor);
widget->setAutoFillBackground(true);
widget->setPalette(palette);
setCentralWidget(widget);
© www.soinside.com 2019 - 2024. All rights reserved.