【Qt】Qt Creator中布局器详解
00. 目录
文章目录
- 00. 目录
- 01. 概述
- 02. 开发环境
- 03. 布局器概述
- 04. 布局属性设置
- 05. 弹簧条属性和作用
- 06. 附录
01. 概述
关于 Qt 布局管理,有专门的帮助文档页面Layout Management
。本章的主要内容就是介绍布局管理的知识,Qt 设计师里面不仅有布局器的控件可以拖动使用,还可以在窗体里面选择控件,然后点击设计师上面的工具按钮自动添加布局器。本节首先大致介绍一下 Qt 设计师里面关于布局器的操作界面。
Qt 的窗口主要内容包括: 布局的样式 , 基于UI界面设置布局 , 基于API设置布局。
Qt 窗口布局是指将多个子窗口按照某种排列方式将其全部展示到对应的父窗口中的一种处理方式。在 Qt 中常用的布局样式有三种,分别是:
02. 开发环境
Windows系统:Windows10
Qt版本:Qt5.15或者Qt6
03. 布局器概述
在设计师和QtCreator中左边列表,可以看到 Layouts 栏目里有四个布局器:
◆ 垂直布局器 QVBoxLayout:将内部的控件按照垂直方向排布,一行一个。
◆ 水平布局器 QHBoxLayout:将内部的控件按照水平方向排布,一列一个。
◆ 网格布局器 QGridLayout:按照多行、多列的网格排布内部控件,单个控件可以占一个格子或者占据连续多个格子。
◆ 表单布局器 QFormLayout:Qt 设计师里把这个布局器称为窗体布局器,窗体布局器这个叫法不准。这个布局器就是对应网页设计的表单,通常用于接收用户输入。该布局器就如它的图标一样,就是固定的两列控 件,第一列通常是标签,第二列是输入控件或含有输入控件的布局器。
◆ Qt 另外还有一个堆栈布局器 QStackedLayout,通常用于容纳多个子窗口布局,每次只显示其中一个。这个布局器隐含在堆栈部件 QStackedWidget 内部,一般直接用 QStackedWidget 就行了,不需要专门设置堆栈布局器。堆栈部件和堆栈布局器留到后面容器类控件的 章节讲解。
与布局紧密关联的是两个空白条(或叫弹簧条):Horizontal Spacer 水平空白条和 Vertical Spacer 垂直空白条,空白条的作用就是填充无用的空隙,如果不希望看到控件拉伸后变丑,就可以塞一个空白条到布局器里面,布局器通常会优先拉伸空白条。两种空白条的类名都是 QSpacerItem,两种空白条只是默认的拉伸方向不一样。
对界面进行布局有两种方式,第一种方式是预先设计好整体布局,先拖入布局器,后拖入功能控件到布局器里面,这种方式不太方便,因为脑海里得提前做好布局规划。第二 种方式才是是最常用的,先把所有功能控件拖入主界面,然后根据设置好的功能控件来决定如何进行布局。Qt 的布局器中既可以添加普通功能控件,也可以添加其他布局器,所以布局器的使用是非常灵活的。界面里的控件,可以先按行排列布局,再按列排列布局;或者反过来,先排好列,再 排好行;当然也可以直接用网格布局器或表单布局器。可以按实际控件的关系和用户喜好进行布局。
Qt 设计师和Qt Creator左边列的四个布局器,其实不是经常需要拖动它们到主界面,更为常见的操作是选中控件,然后点击设计师上面布局工具栏里的快捷按钮实现布局,这些快捷按钮的功能更丰 富,也更常用。布局工具栏有 8 个按钮,下面依次介绍:
① 将选中控件添加到水平布局器排列。
② 将选中控件添加到垂直布局器排列。
③ 将选中控件添加到水平分裂器排列。
④ 将选中控件添加到垂直分裂器排列。
⑤ 将选中控件添加到网格布局器排布,行列的数目不限。
⑥ 将选中控件添加到表单布局器排布,该布局器固定为两列控件。
⑦ 打破布局,即保留布局器内部的控件和子布局,消除当前选中的布局器。
⑧ 根据需要显示的内容,自动调整控件或窗体的尺寸,相当于调用一次 adjustSize() 函数。
【温馨提示】
这里需要说明一下,布局器和空白条的基类其实都是 QLayoutItem,布局器仅用于辅助功能,帮助自动调整窗口里的控件布局,并不是实体控件,没有 show() 之类的显示函数,不能单独存在,必须要有实体控件才能设置布局器。
我们之前介绍的都是实体控件,基类都是 QWidget ,都可以单独存在,有 show() 之类的显示函数。
分裂器具有布局功能,但分裂器的基类是 QFrame,分裂器是一个实体控件,分裂器不同于布局器。
04. 布局属性设置
当我们给窗口设置了布局之后,选中当前窗口,就可以看到在其对应的属性窗口中除了有窗口属性,还有一个布局属性,下面给大家介绍一下这些属性:
通过设置布局上下左右的边距,或者是控件之间的距离也可以使界面看起来更加美观。
05. 弹簧条属性和作用
在进行窗口布局的时候为了让界面看起来更加美观,需要调整控件的位置,比如:靠左,靠右,居中,又或者我们需要调节两个控件之间的距离,以上这些需求使用弹簧都是可以实现的。
关于弹簧的 sizeType 属性,有很多选项,一般常用的只有两个:
- Fixed: 得到一个固定大小的弹簧
- Expanding: 得到一个可伸缩的弹簧,默认弹簧撑到最大
06. 附录
6.1 Qt教程汇总
网址:https://dengjin.blog.csdn.net/article/details/115174639
【Qt】Qt Creator中布局器详解相关推荐
- bootstrap下拉选择框选中事件_CAD制图初学入门之CAD软件中布局功能详解
很多CAD制图初学入门者在绘制图纸的过程中,如果没有对CAD软件中的功能了解透彻的话,在使用的时候就没有办法运用好这些功能.接下来就给CAD制图初学入门者详细介绍一下CAD布局功能吧! CAD布局功能 ...
- C++框架_之Qt的信号和槽的详解
目录 C++_之Qt的信号和槽的详解 1.概述 1.1对象树(子对象动态分配空间不需要释放) 2.信号和槽 Qt5 的书写方式:(推荐的使用)★★★★★ Qt4 的书写方式: 3.自定义信号槽 3.1 ...
- python布局管理_Python基础=== Tkinter Grid布局管理器详解
本文转自:https://www.cnblogs.com/ruo-li-suo-yi/p/7425307.html @ 箬笠蓑衣 Grid(网格)布局管理器会将控件放置到一个二维的表 ...
- Python 装饰器详解(中)
Python 装饰器详解(中) 转自:https://blog.csdn.net/qq_27825451/article/details/84581272,博主仅对其中 demo 实现中不适合pyth ...
- element布局容器大小_element中el-container容器与div布局区分详解
用于布局的容器组件,方便快速搭建页面的基本结构: el-container:外层容器.当子元素中包含 或 时,全部子元素会垂直上下排列,否则会水平左右排列. el-header:顶栏容器. el-as ...
- Unity中AB包详解(超详细,特性,打包,加载,管理器)
Unity中的AssetBundle详解 AssetBundle的概念 AssetBundle又称AB包,是Unity提供的一种用于存储资源的资源压缩包. Unity中的AssetBundle系统是对 ...
- Python-Matplotlib可视化(番外篇)——Matplotlib中的事件处理详解与实战
Python-Matplotlib可视化(番外篇)--Matplotlib中的事件处理详解与实战 前言 事件连接 事件属性 实战1:直方图中矩形的拖拽 实战2:鼠标进入和离开 相关链接与参考 前言 在 ...
- Cesium 核心类Viewer-查看器详解
Cesium 核心类Viewer-查看器详解 1 简介 A base widget for building applications. It composites all of the standa ...
- zend framework php编码规范,Zend Framework常用校验器详解
本文实例讲述了Zend Framework常用校验器.分享给大家供大家参考,具体如下: Date日期校验器 代码:<?php require_once 'Zend/Validate/Date.p ...
最新文章
- Visual Studio UML Activity Diagram(1)
- 五轴编程_HyperMILL五轴编程培训HyperMILL 软件的特点
- 使用 Python 在 GitHub 上运行你的博客
- laravel关闭crsf
- [专栏精选]Unity刚体详解
- Redis学习总结(18)——Redis 常见面试题复习
- Ruby游戏开发-BMXP介绍
- 开发 面试_农行软件开发中心实习面试
- Vue 双向数据绑定原理分析
- linux根据部署jenkins
- linux下mysql5.7环境
- 谷歌地图网页版_安卓版谷歌地图新增专用的街景图层
- OBJ 模型文件与MTL材质文件 介绍
- 常见电线电缆电阻的检测方法盘点
- Elasticsearch实现内容精确匹配查询
- 秦纪二 秦始皇帝二十年(甲戌,公元前227年)——摘要
- 《珞珈山原色植物图谱》高清文字版pdf 附下载链接
- 6-7-Isomorphic-函数题
- python读取excel表头_13-用 Python 读写 Excel 文件
- PHP开发微信支付小微商户V3版本 图片上传、生成签名、平台证书获取、平台证书编号、敏感信息加密