dar*_*aze 5 qt alignment qgridlayout
问题就是这一切.
我有一个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
Run Code Online (Sandbox Code Playgroud)
在整个列或行中没有任何内容的空间中,minimumRowHeight和所有这些设置都可以工作.对?
好.按钮A和按钮B(以及其余部分)永远不会集中在他们共享的3个单元格上.决不.我写的布局参数无关紧要.
我删除了代码,因为它最终使用垂直布局,内部,两个水平布局.那些以这种方式集中.但我想更好地定位他们.
什么不起作用是在添加小部件时使用:
addWidget(widget,0,0,2,0,Qt :: AlignHCenter); AlignCenter甚至没有工作.
如何使其居中或对齐?
谢谢!
Tim*_*yer 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 );
Run Code Online (Sandbox Code Playgroud)
有fromRow = 0,fromColumn = 0,rowSpan = 2和columnSpan = 0.这意味着它从第0行开始并跨越两行,即它将在第0行和第1行(注意:总共两行,而不是另外两行).它也从第0列开始,跨度为0,我认为这意味着将忽略列跨度.
所以你真正想要的应该是:
addWidget( widget, 0, 0, 0, 3, Qt::AlignCenter );
Run Code Online (Sandbox Code Playgroud)
您可能需要稍微尝试对齐.