当你使用无效时QGridLayout::addWidget(QWidget* widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0)
、 rowSpan 和 columnSpan 指的是另一行或另一列,就像您刚刚给出的行一样, rowSpan 不适用,例如,如果您添加新行,您会得到以下结果:
obj1 = qtg.PlotWidget()
obj2 = qtg.PlotWidget()
obj3 = qtg.PlotWidget()
obj4 = qtg.PlotWidget()
obj5 = qtg.PlotWidget()
obj6 = qtg.PlotWidget()
obj7 = qtg.PlotWidget()
layout = QGridLayout()
layout.addWidget(obj1, 0, 0, 1, 2)
layout.addWidget(obj2, 0, 2, 1, 1)
layout.addWidget(obj3, 0, 3, 1, 1)
layout.addWidget(obj4, 1, 0, 1, 1)
layout.addWidget(obj5, 1, 1, 1, 1)
layout.addWidget(obj6, 1, 2, 1, 1)
layout.addWidget(obj7, 1, 3, 1, 1)
box = QGroupBox(self)
box.setLayout(layout)
self.setCentralWidget(box)
如果您需要建立比例,则必须使用拉伸,在本例中setColumnStretch():
obj1 = qtg.PlotWidget()
obj2 = qtg.PlotWidget()
obj3 = qtg.PlotWidget()
layout = QGridLayout()
layout.addWidget(obj1, 0, 0, 1, 2)
layout.addWidget(obj2, 0, 2, 1, 1)
layout.addWidget(obj3, 0, 3, 1, 1)
layout.setColumnStretch(0, 2)
layout.setColumnStretch(2, 1)
layout.setColumnStretch(3, 1)
box = QGroupBox(self)
box.setLayout(layout)
self.setCentralWidget(box)
通过 QHBoxLayout 可以获得相同的效果:
obj1 = qtg.PlotWidget()
obj2 = qtg.PlotWidget()
obj3 = qtg.PlotWidget()
layout = QHBoxLayout()
layout.addWidget(obj1, stretch=2)
layout.addWidget(obj2, stretch=1)
layout.addWidget(obj3, stretch=1)
box = QGroupBox(self)
box.setLayout(layout)
self.setCentralWidget(box)