设置布局的背景颜色
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。 很抱歉没有看到您的代码中的一些差异以上是关于设置布局的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章