我正在QT中做我的第一个项目,并且对动态调整小部件和布局有疑问。
我正在开发一个 qwidget,它将根据提供给 qwidget 构造函数的参数来保存许多小部件。我很难调整我的小部件以及布局和分组框的大小以适应构造函数传递的小部件数量。
我的 qwidget 当前包含一个分组框和该分组框中的布局。在构建小部件时,我将小部件添加到布局中,然后尝试使用函数setSizeConstraint(),adjustSize()和resize()调整布局大小。但是,这些似乎都没有正确调整小部件的大小,因为我的小部件仍然相互重叠。
我的用户界面本质上是这样的
Qwidget
->qGroupBox
-->q布局
--->qwidget1
--->qwidget2
--->qwidget3
下面是构造函数
myWidget::myWidget(int numRows) :
myUiPtr(new UiLLmyWidget)
{
//Add widget rows
myUiPtr->setupUi(this);
for(int i=0; i<numRows; i++)
{
myRowWidget *row = new myRowWidget();
myUiPtr->myLayout->addWidget(row);
}
//Attempt to resize widget (doesn't work)
myUiPtr->myLayout->setSizeConstraint(QLayout::SetMinimumSize);
myUiPtr->myGroupbox->adjustSize();
this->adjustSize();
}
我希望小部件及其所有子分组会根据我在布局中创建的小部件数量调整大小,但这不会发生,而是让小部件相互重叠。
您可以尝试以下操作:
QGridLayout* layout = new QGridLayout();
layout->setAlignment(Qt::AlignTop);
myUiPtr->groupbox->setLayout(layout);
...
layout->addWidget(row, layout->count(), 0);
您可以使用 QScrollArea 而不是(或在 Groupbox 内部),因此较小的窗口大小确实会导致重叠。
编辑: 抱歉,我没有考虑这些问题是"调整小部件大小"的一部分。