1. 绝对定位存在的问题
-
使用绝对定位存在的问题:
- 效率低下
- 组件的位置和大小无法自适应父窗口的变化
-
解决方案:布局管理器,提供相关的类对界面组件进行布局管理
- 能够自动排列窗口中的界面组件
- 窗口变化后自动更新界面组件的大小
-
布局管理器继承关系
-
QLayout 是 QT 中布局管理器的抽象基类
-
通过继承 QLayout 实现了功能各异且互补的布局管理器
-
QT 中可以根据需求自定义布局管理器
-
布局管理器不是界面组件,而是界面组件的定位策略
2. QBoxLayout布局管理器
2.1 QBoxLayout
- 以水平或者垂直的方式管理界面软件
2.2 QHBoxLayout
- 继承于 QBoxLayout,用于水平布局管理
2.3 QVBoxLayout
- 继承于 QBoxLayout,用于垂直布局管理
2.4 嵌套布局
-
布局管理器可以相互嵌套,形成更加复杂的布局方式
- 布局嵌套几乎可以完成所有常用的界面布局
- 自定义布局类可以达到个性化界面布局的效果
3. 总结
- 绝对定位的布局方式无法自适应窗口的变化
- QT 提供了相关的类对界面组件进行布局管理
- QT 预定义了功能各异且互补的布局管理器
- 布局管理器能够相互嵌套形成复杂的布局