问题就是这一切。
我有一个5 x 3网格。
看起来像这样
row 0: buttonA--buttonA--buttonA nothing buttonB--buttonB--buttonB
row 1: empty row
row 2: buttonC nothing buttonD nothing buttonE nothing buttonF
在整个列或行中没有任何内容的空间中,minimumRowHeight和所有这些设置都可以工作。正确?
好。按钮A和按钮B(以及其余部分)永远不会集中在他们共享的3个单元格上。决不。我写的布局参数无关紧要。
我擦除了代码,因为它最终使用垂直布局,内部有两个水平布局。那些以这种方式集中。但我想更好地定位它们。
使用以下方法添加小部件时不起作用:
addWidget(widget,0,0,2,0,Qt :: AlignHCenter); AlignCenter甚至都没有。
如何使其居中或对齐?
谢谢!
答案 0 :(得分:12)
QGridLayout::addWidget()的语法是这样的:
void QGridLayout :: addWidget(QWidget * widget,int fromRow,int fromColumn, int rowSpan,int columnSpan ,Qt :: Alignment alignment = 0)
描述:
此版本将给定的窗口小部件添加到单元格网格中,跨越多行/列。单元格将从fromRow开始,fromColumn 跨越rowSpan行和columnSpan列。
这意味着你的行
addWidget( widget, 0, 0, 2, 0, Qt::AlignHCenter );
有fromRow = 0
,fromColumn = 0
,rowSpan = 2
和columnSpan = 0
。这意味着它从第0行开始并跨越两行,即它将在第0行和第1行(注意:总共两行,而不是另外两行)。它也从第0列开始,跨度为0,我认为这意味着将忽略列跨度。
所以你真正想要的应该是:
addWidget( widget, 0, 0, 0, 3, Qt::AlignCenter );
您可能需要稍微尝试对齐。