设置布局的背景颜色

Posted

技术标签:

【中文标题】设置布局的背景颜色【英文标题】:Set background color of layout 【发布时间】:2015-02-14 12:38:49 【问题描述】:

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

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

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

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])

【问题讨论】:

【参考方案1】:

您可以在一个空的 QWidget 上添加设置布局并在此小部件上设置 StyleSheet。

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)

【讨论】:

不设置循环的每个布局,它设置整个框架 我的错,我改正了 你不能在一个小部件上使用 .addWidget() ,它是容器 我没有。我在布局上使用 addWidget。 很抱歉没有看到您的代码中的一些差异

以上是关于设置布局的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何更改此线性布局背景颜色?

android设置linearlayout布局的背景颜色,怎么动态改变背景颜色?

怎么设置android背景颜色

如何在颤动中为布局元素设置背景颜色

android中怎样设置背景颜色

单击按钮时更改布局背景颜色