在一个QGridLayout包含在一个以上的小区A插件不居中

问题描述 投票:5回答:1

这个问题说明了一切。

我有一个5×3格。

它看起来像这样

row 0:  buttonA--buttonA--buttonA   nothing   buttonB--buttonB--buttonB

row 1:  empty row

row 2:  buttonC  nothing  buttonD   nothing   buttonE  nothing  buttonF     

在空间那里是不是整个列或行的最低行高和所有的这些设置会工作。对?

好。按钮A和按钮B(以及其余部分),永远不会集中于那些3个细胞它们共享。决不。无论doesn't我写的东西上布局的参数。

我删除的代码,因为它最终使用垂直布局得到了它,并且里面,两个水平布局。那些得到集中的方式。但我想给他们更好地定位。

添加窗口小部件时,使用的是什么doesn't工作是:

addWidget(插件,0,0,2,0,QT :: AlignHCenter);甚至没有AlignCenter工作。

如何使它居中或右对齐?

谢谢!

qt alignment qgridlayout
1个回答
12
投票

QGridLayout::addWidget()的语法是这样的:

无效QGridLayout :: addWidget(QWidget的*插件,INT fromRow,INT fromColumn,INT ROWSPAN,INT columnSpan,QT ::对准对准= 0)

与描述:

该版本增加了给定的窗口小部件的单元网格,跨越多个行/列。电池将在fromRow开始,fromColumn跨越rowspan的行和列columnSpan。

这意味着你的行

addWidget( widget, 0, 0, 2, 0, Qt::AlignHCenter ); 

fromRow = 0fromColumn = 0rowSpan = 2columnSpan = 0。这意味着,它从0行开始和跨越两行,即它会在0行和1(注意:有两排在总,而不是两个附加行)。此外,它从0列开始为0的跨度,我认为意味着列跨度被忽略。

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

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

你可能有与对准了一下实验。

© www.soinside.com 2019 - 2024. All rights reserved.