使用Qt Designer进行布局

欢迎加入QQ群:853840665,群内分享大量资料,供大家学习

    在使用Form之前,需要将Form上的对象放置到布局中。这确保在应用程序中预览或使用Form时,对象将正确显示。在布局中放置对象还可以确保在调整窗体大小时它们也能正确调整大小。

应用和打断布局

    管理对象的最简单方法是对一组现有对象应用布局。通过选择需要管理的对象并使用主工具栏、菜单或上下文菜单应用到标准布局来实现的。

    一旦将窗体/控件(widgets)插入到布局中,就不可能单独移动和调整它们的大小,因为布局本身控制着其中每个控件的几何形状,并考虑到spacers提供的提示。在这中情况下,您必须打破布局并手动调整每个对象的几何形状,或者通过调整布局大小来影响控件的几何形状。

    要打破布局,请按选中布局并按住Ctrl+0(注意是0)或从窗体的上下文菜单、窗体菜单或主工具栏中选择break layout。还可以从布局中添加和删除间隔符(spacers),以影响小部件的几何形状。

在对象中插入布局

    将对象插入到现有布局可以通过拖拽实现,在拖拽的时候,布局中会显示一个蓝色光标,以指示对象将被添加到何处。

如图在Button3拖拽到Button2下面时,会显示蓝色光标,这是放开左键,Button3就会放置到Button2下面

设置顶层布局

    可以通过清除选择(单击窗体上的鼠标左键)并应用布局来设置窗体的顶层布局。顶层布局是确保控件在窗口调整大小时能够正确调整大小。要检查是否设置了顶层布局,预览widget并尝试通过拖动来调整窗口的大小。

    在上图中如果我们没有设置顶层布局,那么在预览的时候三个按键的大小不会随者窗口的改变而改变。我们观察右侧,会发现有个红色圆圈标识。

空白处右键Lay out->随便选择一种布局,红色圆圈标识消失,并且预览后你会发现button的大小会随者窗体大小而变化

    布局选择——可以通过Qt Designer左边的控件盒子(Widget Box->Layouts)

或者右键

垂直和水平布局

    在窗体上排列对象的最简单方法是将它们放置在水平或垂直布局中。水平布局确保内部小部件水平对齐;垂直布局确保它们垂直对齐。水平和垂直布局可以组合和嵌套到任何深度。但是,如果您需要对对象的位置有更多的控制,最好使用网格布局(grid layout)。

网格布局(Grid Layout)

    复杂的表格布局可以通过在网格布局中放置对象来创建。这种布局让表单设计人员可以更自由地在表单上安排小部件,但会导致更不灵活的布局。然而,对于某些形式布局,网格布局比水平和垂直布局的嵌套布局更适合。

拆分器布局(Splitter Layouts)

     管理窗体上对象布局的另一种常见方法是将它们放在拆分器中。这些分配器以与正常布局相同的方式水平或垂直地排列对象,但也允许用户调整分配给每个对象的空间数量。

    尽管QSplitter是一个容器控件,但Qt Designer将splitter对象视为应用于现有控件的布局。要将一组控件放到splitter中,请按此处描述的方式选择它们(控件放置好后,空白处点击右键拖动到控件另一边的空白处选择控件,然后右键),然后使用适当的工具栏按钮、键盘快捷方式或布局上下文菜单项应用splitter布局。

表单布局(Form Layout)

    从Qt4.4开始,又加入了一个layout类——QFormLayout。这个类以两列的形式管理小部件;左列包含标签,右列包含控件,如line edits, spin boxes等。QFormLayout类遵循各种平台外观指导原则,支持对长行进行包装。

快捷键

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

LayoutShortcutDescription
HorizontalCtrl+1Places the selected objects in a horizontal layout.
VerticalCtrl+2Places the selected objects in a vertical layout.
GridCtrl+5Places the selected objects in a grid layout.
FormCtrl+6Places the selected objects in a form layout.
Horizontal splitterCtrl+3Creates a horizontal splitter and places the selected objects inside it.
Vertical splitterCtrl+4Creates a vertical splitter and places the selected objects inside it.
Adjust sizeCtrl+JAdjusts the size of the layout to ensure that each child object has sufficient space to display its contents. See QWidget::adjustSize() for more information.

Note: Ctrl+0 is used to break a layout.

### 如何在 Qt Designer 中实现布局嵌套 #### 使用 Qt Designer 创建基本窗口 启动 Qt Designer 后,选择创建一个新的表单 (Widget),这将成为放置各种控件的基础。 #### 添加顶层布局 为了开始构建布局,在工具箱中找到并拖拽 `QWidget` 或者其他合适的顶级容器到设计区域。接着通过右键点击该容器或在其选中的状态下前往顶部菜单栏的“布局(Layout)”选项来设置整体布局方式。可以选择水平布局 (`QHBoxLayout`)、垂直布局 (`QVBoxLayout`) 等作为最外层结构[^2]。 #### 构建子级布局 对于更复杂的界面需求来说,可以在已经设定好的大框架内继续细分空间分配。比如在一个垂直布局下的某个区域内再加入新的布局形式——可以是网格布局(`QGridLayout`)用于表格样式的展示;或者是表单布局(`QFormLayout`)适用于数据输入场景等。具体操作同样是先选定目标父组件,之后利用同样的方法为其指定内部的小范围布局模式[^3]。 #### 实现多层级嵌入 当涉及到更深程度上的层次划分时,则重复上述过程即可完成多级别的布局组合。例如想要得到一个左侧列表加右侧详情页的效果,就可以在外围建立一个水平分割器(Horizontal Splitter),左边部分采用列表视图(ListView)配合垂直布局容纳各个条目按钮(Button with QVBoxLayout),而右边则依据实际内容决定是否进一步拆分更多小组件及其对应的布局安排[^1]。 ```xml <ui version="4.0"> <class>MainWindow</class> <widget class="QWidget" name="centralWidget"> <!-- 外部水平布局 --> <layout class="QHBoxLayout" name="horizontalLayout"> <!-- 左侧垂直布局 --> <item> <layout class="QVBoxLayout" name="verticalLayoutLeft"/> </item> <!-- 右侧可能存在的复杂布局 --> <item> <widget class="QWidget" name="rightContainer"> <layout class="YourChosenLayoutTypeHere" name="complexRightLayout"/> </widget> </item> </layout> </widget> </ui> ``` 此 XML 片段展示了如何定义一个多级嵌套的 UI 结构,其中包含了外部水平布局以及两个不同方向的内部布局实例。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冥焱破晓

开发不易,写文章更难,感谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值