我正在生成一个Gridlayout并添加Widgets,如下所示:
elements = QGroupBox()
self.grid = QGridLayout(elements)
#Arrange Row Elements
self.grid.addWidget(subjectName, 0, 0)
self.grid.addWidget(statusName, 0, 1)
我想为第一行(不是行内的小部件)设置 background-color ,以指示网格的标题。
答案 0 :(得分:2)
您可以使用QObjects属性在设置样式表时区分单元格。
可以使用例如
setProperty( "coloredcell", true )
小部件上的与
一起添加到QGridLayoutparentWidget.setStyleSheet("*[coloredcell=\"true\"] {background-color:rgb(" + QString::number((rand() % 255)) + "," + QString::number((rand() % 255)) + "," + QString::number((rand() % 255)) + ");}");
其中parentWidget是包含QGridLayout的Widget。
要将backgroundcolor放在单个单元格的整个范围内,您必须向QGridLayout添加一个中间QWidget,设置属性,将中间布局添加到中间QWidget,然后在此中添加您想要的小部件在表中看到。
如果没有中间窗口小部件,则设置" coloredcell"实际小部件本身的属性(在我的示例中,QPushButton),只会更改此小部件的backgroundcolor,而不是整个QGridLayout单元格的颜色。这就是我们需要它的原因。
示例代码(未经测试):
widget = QWidget()
gridLayout = QGridLayout(widget)
for i in range(0,3):
for j in range(0,3):
intermediateWidget = QWidget(widget)
intermediateWidget.setProperty("coloredcell", true)
intermediateLayout = QGridLayout( intermediateWidget )
button = QPushButton( QString( "Row %1 Col %2" ).arg(i).arg(j) )
gridLayout.addWidget(intermediateWidget, i, j)
widget.setStyleSheet("*[coloredcell=\"true\"] {background-color:rgb(255,0,0);}")
widget.show()