在Qt Widget应用程序中,我正在尝试进行以下操作:
我的目标是创建一个带有scrollArea的表单,其中包含垂直布局,滚动区域中的每个项目都在顶部对齐。
不幸的是,它只停留在这里显示的中心:
我已经尝试选择scrollArea并将AlignVCenter中的垂直对齐方式转换为AlignTop,但这似乎没有效果。
如何将所有内容对齐到滚动框的顶部?
答案 0 :(得分:0)
您可以使用QListWidget
来保存不仅包含文字,还包含QWidget
的列表(例如按钮,线路编辑等)
只需在窗口中添加QListWidget
,然后在C ++中根据需要将小部件添加到QListWidget
。
以下是在QListWidget
中插入按钮的一些步骤:
在您的应用程序中创建一个QListWidget项。
更改selectionMode
= NoSelection
和focusPolocy
= NoFocus
将以下C ++代码放入您的应用程序中:
// Create list item
QListWidgetItem *listWidgetItem = new QListWidgetItem();
// Create widget
QWidget *widget = new QWidget();
QVBoxLayout *verticalLayout = new QVBoxLayout();
verticalLayout->setSizeConstraint(QLayout::SetFixedSize);
widget->setLayout(verticalLayout);
// Add button to widget layout
QPushButton *pushButton = new QPushButton("Button!");
verticalLayout->addWidget(pushButton);
// Add list item to ul->listWidget
listWidgetItem->setSizeHint(widget->sizeHint()); // Set the size of the list item to the same as the widget
ui->listWidget->addItem(listWidgetItem);
ui->listWidget->setItemWidget(listWidgetItem, widget);
旧回答:
我找到了答案here,但我会将其重新发布给其他感兴趣的人。
要对齐滚动区域顶部的元素,请将作为子项的垂直布局添加到滚动区域,并将所有元素放在该垂直布局中。 像这样:
在C ++中,使用spacer item在滚动区域内的垂直布局中添加addStretch()
:
ui->verticalLayout->addStretch();
现在所有物品都应该神奇地与顶部对齐。
修改强>
这似乎只适用于第一个项目,而所有其他项目都没有被推到顶部。