9

这个问题说明了一切。

我有一个 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( 小部件, 0,0 , 2,0 , Qt::AlignHCenter ); 甚至 AlignCenter 都不起作用。

如何使其居中或向右对齐?

谢谢!

4

1 回答 1

17

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_ 这意味着它从第 0 行开始并跨越两行,即它将位于第 0 行和第 1 行(注意:总共两行,而不是另外两行)。它也从第 0 列开始,跨度为 0,我认为这意味着列跨度被忽略。rowSpan = 2columnSpan = 0

所以你真正想要的应该是:

addWidget( widget, 0, 0, 0, 3, Qt::AlignCenter );

您可能需要稍微尝试一下对齐方式。

于 2013-01-15T11:57:36.970 回答