gpt4 book ai didi

c++ - QGridLayout 没有按预期工作

转载 作者:行者123 更新时间:2023-11-30 03:45:46 26 4
gpt4 key购买 nike

我正在使用 Qt5.5 为我的项目构建图形用户界面并尝试使用 QGridLayout。

第一个来源

此代码按我预期的方式工作。

QGridLayout * layout = new QGridLayout;
layout->addWidget(lineEdits[0], 0,0,1,1);
layout->addWidget(lineEdits[1], 0,1,1,1);

layout->addWidget(lineEdits[2], 1,0,1,1);
layout->addWidget(lineEdits[3], 1,1,1,2);

layout->addWidget(lineEdits[4], 2,0,1,2);
layout->addWidget(lineEdits[5], 2,2,1,1);
this->setLayout(layout);

这是我得到的结果。

First case

第二来源

但是这段代码生成了损坏的布局,这与我的预期相去甚远。

QGridLayout * layout = new QGridLayout;
layout->addWidget(lineEdits[0], 0,0,1,1);
layout->addWidget(lineEdits[1], 0,1,1,2); //this is the only difference

layout->addWidget(lineEdits[2], 1,0,1,1);
layout->addWidget(lineEdits[3], 1,1,1,2);

layout->addWidget(lineEdits[4], 2,0,1,2);
layout->addWidget(lineEdits[5], 2,2,1,1);
this->setLayout(layout);

enter image description here

我不知道如何解决这个问题。

如果您提前提出建议,我将不胜感激。

最佳答案

问题是中间的列没有任何明显的宽度 - 它在那里,但唯一让它可见的是列间距,这就是最后一行与其他两行不对齐的原因。

解决此问题的一种方法是设置列 stretch因素。例如,试试这个(所有列的系数相同,实际数字无关紧要,只有比例重要):

//...
layout->addWidget(lineEdits[5], 2, 2, 1, 1);
for (int i=0; i<3; ++i)
layout->setColumnStretch(i, 1);
this->setLayout(layout);

这给了我以下布局:

enter image description here

另一种选择是明确强制其中一个多列小部件的宽度,但如果可以的话最好避免这种情况。

关于c++ - QGridLayout 没有按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34523308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com