问题说明了一切。
我有一个 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 都不起作用。
如何使其居中或向右对齐?
谢谢!
最佳答案
QGridLayout::addWidget() 的语法是这样的:
void QGridLayout::addWidget ( QWidget * widget, int fromRow, int fromColumn, int rowSpan, int columnSpan, Qt::Alignment alignment = 0 )
与描述:
This version adds the given widget to the cell grid, spanning multiple rows/columns. The cell will start at fromRow, fromColumn spanning rowSpan rows and columnSpan columns.
这意味着你的线路
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 );
您可能需要稍微尝试一下对齐方式。
关于qt - QGridLayout 中包含在多个单元格中的小部件未居中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14277184/