我们经常看到的Qt的布局有:5种(都是继承自QLayout)
QHBoxLayout
QVBoxLayout
QGridLayout
QFormLayout
QStackedLayout
但是我在官方文档有看到其他的Layout相关命名,
例如:
QPageLayout
QTextLayout
等等
请问这些是用于布局的吗?还是说Qt中布局就只有5种呢?
我们经常看到的Qt的布局有:5种(都是继承自QLayout)
QHBoxLayout
QVBoxLayout
QGridLayout
QFormLayout
QStackedLayout
但是我在官方文档有看到其他的Layout相关命名,
例如:
QPageLayout
QTextLayout
等等
请问这些是用于布局的吗?还是说Qt中布局就只有5种呢?
Qt中有多种布局管理器,但最常用的布局有以下几种:
除了这些,Qt还提供了一些其他的布局和布局相关的工具,比如布局占位符(QLayoutItem)和布局占位符迭代器(QLayoutIterator)。此外,Qt也允许开发者自定义布局,以满足特定的需求。所以,Qt中的布局不仅限于5种,而是提供了多种布局选项,以及扩展和自定义布局的能力。
Qt 中的布局不止 QHBoxLayout、QVBoxLayout、QGridLayout、QFormLayout、QStackedLayout 这 5 种。以下是对 QPageLayout、QTextLayout 及其他布局的介绍:
QPageLayout
QPageLayout 不是通常意义上用于控制界面中控件布局的类,主要用于描述分页文档中页面的尺寸、方向和边距等信息。可设置页面大小、方向、边距等属性,在处理打印、文档排版等与页面相关的操作中起作用,比如在生成 PDF 文档或进行打印预览时,用于定义页面的布局规格。
QTextLayout
QTextLayout 也不是用于常规界面布局管理的类,主要用于文本的布局和格式化。可以帮助开发者实现文本的换行、对齐、字体设置等功能,在需要对文本进行复杂排版的场景中使用,如在自定义文本编辑器或需要在特定区域内显示格式化文本的应用中。
其他布局
QFlowLayout:在 Qt 5.7 及更高版本中可用,类似于 HTML 中的流布局,控件会按照它们被添加的顺序从左到右、从上到下排列,直到空间不足时会自动换行。
QDockWidgetAreaLayout:专门用于管理 QDockWidget 的布局,通常与 QMainWindow 一起使用,用于创建具有可停靠窗口的复杂应用程序界面。
QSplitter:虽不属于严格意义上继承自 QLayout 的布局类,但也用于布局管理。它允许用户通过拖动分隔条来调整子控件的大小,常用于需要用户能够动态调整控件大小的场景。
此外,开发者还可以通过继承 QLayout 或其子类来创建自定义布局,以满足特定的布局需求。
15 回答7.8k 阅读
2 回答8k 阅读✓ 已解决
1 回答10.1k 阅读✓ 已解决
1 回答7.8k 阅读✓ 已解决
2 回答4k 阅读✓ 已解决
4 回答3.6k 阅读
4 回答3.5k 阅读✓ 已解决
不止五种,主要看你的使用场景比如:
简单排列控件
水平排列:使用
QHBoxLayout
垂直排列:使用
QVBoxLayout
复杂布局
网格布局:使用
QGridLayout
表单布局:使用
QFormLayout
切换视图
堆叠布局:使用
QStackedLayout
特殊需求
自定义盒布局:使用
QBoxLayout
空白空间:使用
QSpacerItem
图形视图
锚定布局:使用
QGraphicsAnchorLayout
图形网格布局:使用
QGraphicsGridLayout
图形线性布局:使用
QGraphicsLinearLayout
文档和文本
分页布局:使用
QPageLayout
文本布局:使用
QTextLayout