Qt 学习第六天:页面布局

[复制链接]
发表于 2026-10-4 15:12:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

Qt 的页面布局是写界面绕不开的一步。本文用 Qt Widgets Designer 沙盒式拖拽的方式梳理四种常见布局:水平布局 QHBoxLayout、垂直布局 QVBoxLayout、网格布局 QGridLayout、表单布局 QFormLayout,并补充几个控件尺寸策略上的实用知识点。

一、为什么要用布局而不是绝对坐标

早期写法是直接指定控件坐标和尺寸,窗口一缩放就全乱。布局管理器的价值在于:控件尺寸和位置交给布局算法决定,窗口变化时按比例重排,同时布局还能把父控件尺寸变化通知给子控件。Qt Widgets Designer 里拖出来的 .ui 文件本质就是一段 XML,双击 .ui 可以在设计器和代码视角之间切换,边拖边看属性面板,比手敲代码直观得多。

二、四种常见布局

水平布局 QHBoxLayout

H 是 horizontal 的缩写。控件沿水平方向从左往右排成一行,适合放一排同类按钮——比如"确定/取消"两个按钮并排。它只能在水平方向左右追加控件,纵向尺寸由布局统一控制。

垂直布局 QVBoxLayout

V 是 vertical 的缩写。控件沿垂直方向从上往下堆叠,适合主菜单、表单项逐行排列的场景。和水平布局对称,只能在上下方向追加控件。

网格布局 QGridLayout

没有缩写。整块区域被均匀切成若干行若干列的格,每个控件占一个或多个格子,行数列数自行指定。适合计算器键盘、参数矩阵这类需要在二维位置上对齐的界面。

表单布局 QFormLayout

同样没有缩写。它把每一行拆成标签和输入控件两列,专门服务于"字段名 + 输入框"的表单场景,是设置对话框最常用的布局。相比手动用 QGridLayout 拼两列,QFormLayout 会自动处理标签与控件的对齐关系。

三、实战技巧

  • 嵌套才是常态:四种布局互相嵌套使用,外层一个垂直布局装标题、中间表格区域、底部按钮行,其中按钮行再套一个水平布局。也可以在空白位置先放一个 QWidget 当容器,再把子布局装进去,避免直接把多层布局压在同一层上。
  • 间距与边距:布局可以设置 contentsMargins(内容与边缘的间距)和 spacing(控件之间间隔),这几个值决定了界面松紧,别忽略。
  • 伸缩因子 addStretch:在按钮前后加 stretch 可以把控件推到一侧,或者撑开中间空白,比手动加空白控件干净。
  • 尺寸策略 sizePolicy:Fixed、Preferred、Expanding、Minimum 等策略决定控件在布局里如何分配空间。想要某个输入框填满剩余宽度就设 Expanding。
  • 最小尺寸 setFixedSize / setMinimumSize:布局分配空间时不会突破控件的最小尺寸,这个下限是布局生效的前提。

四、补充词汇

写代码和读文档时几个词会反复出现:layout(布局)、spacer(弹性填充块)、stretch factor(伸缩因子)、size policy(尺寸策略)、margins(边距)、alignment(对齐)。这几个词认全,读 Qt 文档基本没有语言障碍。

qidao123.com企服评测-应用市场 编辑提示

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表