本页内容

在……中使用布局Qt Widgets Designer

在表单投入使用之前,必须将表单上的对象放置到布局中。这样可以确保在预览表单或在应用程序中使用表单时,对象能够正确显示。将对象放置在布局中还能确保在调整表单大小时,对象的尺寸也能随之正确调整。

一旦将控件插入布局,就无法单独移动或调整其大小,因为布局本身会根据间隔器提供的提示,控制其中每个控件的几何属性。可以通过向布局中添加间隔器来影响控件的几何属性。

布局可以嵌套以形成层次结构。例如,要实现一个包含水平排列按钮的典型对话框布局,可以使用垂直框布局来排列对话框元素,并在其底部使用包含按钮的水平框布局。有关 Qt 布局系统的介绍,请参阅《布局管理》。

要拆分布局,请按Ctrl+0,或从表单的上下文菜单、表单菜单或主工具栏中选择“拆分布局”。

设置顶级布局

可以通过清除选择(在表单本身上单击鼠标左键)并应用布局来设置表单的顶级布局。 设置顶级布局对于确保在调整窗口大小时控件能够正确调整大小是必要的。要检查是否已设置顶级布局,请预览控件,并尝试通过拖动大小控点来调整窗口大小。

显示用于更改布局类型的按钮的屏幕截图应用布局

要应用布局,您可以从左侧显示的工具栏中选择所需的布局,或从下方显示的上下文菜单中选择。

同样,顶级布局分别设置在容器控件(QGroupBox )上,或基于页面的容器控件(QTabWidget 、QToolBox 和QStackedWidget )的页面上。要成功设置布局,必须先选中相应的容器控件。

顶级布局不会作为独立对象显示在“对象检查器”中。其属性会显示在“属性编辑器”中主表单、容器控件或容器控件页面的控件属性下方。

截图展示了通过在编辑器中右键单击来更改布局类型的另一种方法

布局对象

布局对象是通过将布局应用于一组现有对象来创建的。具体操作是:先选中需要管理的对象,然后使用主工具栏、表单菜单或表单的上下文菜单,应用其中一种标准布局。

布局对象在表单上以红色边框标示,并在“对象检查器”中显示为一个对象。其属性(边距和约束)显示在“属性编辑器”中。

可以选择布局对象,并将其与其他控件和布局对象一起放置在另一个布局中,从而构建布局层次结构。

当选中一个子布局对象时,按住Shift键并单击其父布局对象即可选中该父布局对象。这样便可以在层级结构中选中特定的布局,否则由于边框较小,选中操作会比较困难。

将对象插入布局

可以通过将对象从当前位置拖动并将其释放到所需位置,将其插入到现有布局中。当对象被拖动到布局上时,布局中会显示一个蓝色光标,以指示该对象将被添加的位置。

截图演示了如何在布局中通过拖放移动小部件

将对象插入到版面中

布局类型

水平和垂直(框)布局

在表单上排列对象的最简单方法是将其放置在水平或垂直布局中。水平布局可确保其中的控件水平对齐;垂直布局可确保它们垂直对齐。

水平和垂直布局可以组合并嵌套到任意深度。但是,如果您需要对对象的放置位置进行更精细的控制,请考虑使用网格布局。

网格布局

通过将对象放置在网格布局中,可以创建复杂的表单布局。这种布局为表单设计者提供了更大的自由度来排列表单上的控件,但可能会导致布局灵活性大幅降低。不过,对于某些类型的表单布局而言,网格布局比水平和垂直布局的嵌套排列要合适得多。

表单布局

QFormLayout 类用于管理双栏表单中的控件;左栏用于放置标签,右栏用于放置字段控件,例如行编辑框、旋转框等。QFormLayout 类遵循各种平台的外观与风格指南,并支持长行的换行处理。

截图展示了一个布局示例,其中包含两个标签,每个标签的一侧都有一个文本框

上述 UI 文件生成的预览效果如下所示。

WindowsmacOSCleanlooks
显示 Windows 系统下布局预览的屏幕截图显示 macOS 上布局预览的屏幕截图显示在 Windows XP 上布局预览效果的截图,界面简洁大方

分屏布局

管理表单中对象布局的另一种常见方法是将其放置在分隔器中。这些分隔器与常规布局一样,可将对象水平或垂直排列,但还允许用户调整分配给每个对象的空间大小。

显示将布局更改为“在分隔符中垂直排列”的屏幕截图

尽管QSplitter 是一个容器控件,但Qt Widgets Designer 将分隔器对象视为应用于现有控件的布局。要将一组控件放入分隔器中,请按照此处所述进行选择,然后使用相应的工具栏按钮、键盘快捷键或“布局”上下文菜单项应用分隔器布局。

快捷键

除了标准工具栏和上下文菜单选项外,还有一组键盘快捷键可用于对控件应用布局。

布局快捷键说明
水平Ctrl+1将选中的对象以水平布局排列。
垂直Ctrl+2将选中的对象以垂直布局排列。
网格Ctrl+5将选中的对象排列为网格布局。
表单Ctrl+6将所选对象放置在表单布局中。
水平分隔线Ctrl+3创建一个水平分隔线,并将所选对象放置在其内部。
垂直分隔线Ctrl+4创建一个垂直分隔线,并将选中的对象放置在其内。
调整大小Ctrl+J调整布局大小,以确保每个子对象都有足够的空间来显示其内容。有关更多信息,请参阅QWidget::adjustSize()。

注意: Ctrl+0用于拆分布局。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.