14

我正在尝试使用 Qt5.0.1 制作登录表单。我创建了 2 个小部件,并将我的标签和行编辑放在其中一个中,并将我的按钮放在另一个中。然后我把这两个小部件放在一个 QVBoxLayout 中,但是布局中两个小部件之间的空间不仅仅是目的。我尝试了 setSpacing 和 setContentsMargin 但它们不适用于该程序。

vhandle->setSpacing(0);
vhandle->setMargin(0);
vhandle->setContentsMargins(0,0,0,0);
vhandle->addWidget(handle,0, Qt::AlignTop);
vhandle->addWidget(handle2,0, Qt::AlignTop);

但两个小部件之间的空间没有任何变化:

http://i.stack.imgur.com/R33MM.png

我该怎么办?

4

2 回答 2

18

问题不在于 的边距设置QVboxLayout,而是容器小部件布局的边距设置和 QVBoxLayout 的间距设置。您已经将间距设置为 0,这应该没问题。另外,假设upperWidgetLayout是upper widgetlowerWidgetLayout的布局和lower widget的布局,试试

upperWidgetLayout->setContentsMargins(-1, -1, -1, 0);
lowerWidgetLayout->setContentsMargin(-1, 0, -1, -1);

这会将上部小部件布局的下边距和下部小部件布局的上边距设置为 0,这样两个小部件的内容之间就没有空格:

对话框布局

临时为各种小部件着色通常是追踪此类问题的好方法。您还可以使用 Qt Designer 来设计 UI 并查看正在生成的源代码(或直接在您的项目中使用 .ui 文件)。

于 2013-05-15T18:55:57.023 回答
0

可以通过在顶部设置对齐来删除小部件或布局之间的额外空间,这是一个示例:

self.layout_scrollarea_v=QVBoxLayout(self.frame)
self.layout_scrollarea_v.setAlignment(Qt.AlignTop)
self.layout_scrollarea_v.addLayout(self.layout_scrollarea_h1)
self.layout_scrollarea_v.addLayout(self.layout_scrollarea_h3)
self.layout_scrollarea_v.addLayout(self.layout_scrollarea_h2)

在您的代码中使用

vhandle->setAlignment(Qt::AlignTop)
于 2020-12-11T19:11:01.183 回答