00. 目录

文章目录

  • 00. 目录
  • 01. 概述
  • 02. 公有成员方法
  • 03. 常用成员方法介绍
  • 04. 预留
  • 05. 预留
  • 06. 附录

01. 概述

QBoxLayout类将子窗口控件水平或垂直排列。

QBoxLayout占用它获取的空间(从其父布局或从parentWidget()),将其划分为一行框,并使每个托管窗口小部件填充一个框内。

如果QBoxLayout的方向是Qt :: Horizontal,则将这些框以适当的大小放置在一行中。每个小部件(或其他框)将至少获得其最小尺寸,并且至多获得其最大尺寸。任何多余的空间都会根据拉伸因子进行共享(有关更多信息,请参见下文)。

如果QBoxLayout的方向是Qt :: Vertical,则将这些框放置在一列中,并再次使用适当的大小。

创建QBoxLayout的最简单方法是使用便捷类之一,例如QHBoxLayout(用于Qt :: HorizontalBox)或QVBoxLayout(用于Qt :: VerticalBox)。您还可以直接使用QBoxLayout构造函数,将其方向指定为LeftToRight,RightToLeft,TopToBottom或BottomToTop。

如果QBoxLayout不是顶级布局(即,它不管理小部件的所有区域和子级),则必须先将其添加到其父级布局中,然后才能对其进行任何操作。添加布局的通常方法是调用parentLayout-> addLayout()。

完成此操作后,可以使用以下四个函数之一将框添加到QBoxLayout中:

  • addWidget()将小部件添加到QBoxLayout并设置小部件的拉伸因子。(拉伸因子沿着Box的行。)
  • addSpacing()创建一个空的Box;这是您用来创建美观且宽敞的对话框的功能之一。有关设置边距的方法,请参见下文。
  • addStretch()创建一个空的,可拉伸的框。
  • addLayout()将包含另一个QLayout的框添加到该行,并设置该布局的拉伸因子。

使用insertWidget(),insertSpacing(),insertStretch()或insertLayout()在方框中的指定位置插入一个框。

QBoxLayout还包括两个边距宽度:

  • setContentsMargins()设置小部件每一侧的外边框的宽度。这是沿着QBoxLayout的四个边中的每个保留空间的宽度。
  • setSpacing()设置相邻框之间的宽度。(您可以使用addSpacing()在特定位置获得更多空间。)

样式提供了页边距默认值。大多数Qt样式指定的默认边距对于子窗口小部件为9,对于Windows为11。间距默认与顶层布局的边距宽度相同,或与父布局相同。

要从布局中删除小部件,请调用removeWidget()。在小部件上调用QWidget :: hide()还可以有效地从布局中删除该小部件,直到调用QWidget :: show()为止。

由于它们方便的构造函数,您几乎总是要使用QVBoxLayout和QHBoxLayout而不是QBoxLayout。

02. 公有成员方法

03. 常用成员方法介绍

水平布局器 QHBoxLayout 和垂直布局器 QVBoxLayout 的基类都是 QBoxLayout,只是二者排列方向不同。水平和垂直布局器的主要功能函数都位于基类 QBoxLayout 里面,我们这里专门介绍一下这个基类的功能。

QBoxLayout 构造函数和 setDirection() 都可以指定布局器的方向:

QBoxLayout(Direction dir, QWidget * parent = 0)
void setDirection(Direction direction)QBoxLayout 布局器的方向 QBoxLayout::Direction 枚举不仅可以指定水平和垂直,还能指定反方向排列:
枚举常量 数值 描述
QBoxLayout::LeftToRight 0 水平布局,从左到右排列
QBoxLayout::RightToLeft 1 水平布局,从右到左排列
QBoxLayout::TopToBottom 2 垂直布局,从上到下排列
QBoxLayout::BottomToTop 3 垂直布局,从下到上排列

水平布局器 QHBoxLayout 和垂直布局器 QVBoxLayout 默认是其中的两种:QBoxLayout::LeftToRight 和 QBoxLayout::TopToBottom 。

布局器是一定要往里面添加控件才有用,添加控件的函数如下:
void addWidget(QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0)
void insertWidget(int index, QWidget * widget, int stretch = 0, Qt::Alignment alignment = 0)
widget 就是要添加的控件指针,stretch 是伸展因子(到 6.5 节再讲这个,本节先不管),伸展因子越大,
窗口变大时拉伸越 多,alignment 一般不需要指定,用默认的即可。第一个 addWidget() 是将控件添加到
布局里面的控件列表末尾,第二个 insertWidget()
是将控件插入到布局里控件列表序号为 index 的位置。对于布局器里的各个控件,可以设置相邻控件之间默认的间距:
void setSpacing(int spacing)
spacing 就是间隔的像素点数目。如果不设置 spacing,那么布局器会根据默认策略决定如何添加控件之间的间隙,一般是根据父窗口
或父布局器的策略来 定。布局器中不仅可以添加控件,还可以直接添加其他布局:
void addLayout(QLayout * layout, int stretch = 0)
void insertLayout(int index, QLayout * layout, int stretch = 0)
参数里添加的 layout 布局器会作为一个整体,与父布局器里其他控件一块排布,stretch 也是伸展因子。对于 QBoxLayout、QHBoxLayout 、QVBoxLayout 布局器,通常不需要手动新建空白条对象,因为它们自带相关函数:
void QBoxLayout::​addSpacing(int size)    //添加 size 固定尺寸空白条到布局器
void QBoxLayout::​addStretch(int stretch = 0)  //添加自动拉伸的空白条到布局器
void QBoxLayout::​insertSpacing(int index, int size)  //插入 size 固定尺寸空白条到布局器
void QBoxLayout::​insertStretch(int index, int stretch = 0)  //插入自动拉伸的空白条到布局器
对于 add* 添加函数,因为布局器内部通常有多个控件,添加函数是把空白条添加到最后。
而 insert* 插入函数,是把空白条插入到指定序号 index 的位置。如果要添加自己创建的空白条对象,也是可行的:
void addSpacerItem(QSpacerItem * spacerItem)
void insertSpacerItem(int index, QSpacerItem * spacerItem)
另外,还可以自己从 QLayoutItem 派生新的布局器条目,对布局器条目进行自定义,这些新的布局器条目可以用如下函数添加:
virtual void addItem(QLayoutItem * item)
void insertItem(int index, QLayoutItem * item)讲了如何添加控件和其他布局器,当然也可以计算布局器里面的条目计数:
virtual int count() const
如果要获得布局器中某个序号的条目:
virtual QLayoutItem * itemAt(int index) const
如果要删除布局器中某个序号的条目:
virtual QLayoutItem * takeAt(int index)
布局器中无论是填充普通控件还是其他布局器,每个条目都是用 QLayoutItem 封装的,对于获得的 QLayoutItem 指针(非空指针),
如果要获取里面封装的控件、布局器或空白条,使用如下函数:
QWidget * QLayoutItem::​widget()
QLayout * QLayoutItem::​layout()
QSpacerItem * QLayoutItem::​spacerItem()
注意判断以上函数的返回值是否为 NULL 指针,如果是非空指针才能进行其他操作。

04. 预留

05. 预留

06. 附录

6.1 Qt教程汇总
网址:https://dengjin.blog.csdn.net/article/details/115174639

【Qt】QBoxLayout类详解相关推荐

  1. Qt QImage类详解(QImage类型转换、QImage类函数及QImage像素操作)

    打开Qt帮助文档,会看到有关于QImage的描述如下:The QImage class provides a hardware-independent image representation tha ...

  2. QT QtableView操作详解

    本文实现了使用QtableView控件来显示数据,数据源使用txt文本作为数据源,使用了QStandardItemModel作为数据模型来实现了对TableView空间的初始化,和对txt数据源的增删 ...

  3. [QT] QMap使用详解

    [QT] QMap使用详解 引言 ​ QMap/QMultiMap属于关联式容器,其底层结构是通过二叉树实现,故其查找value的效率很快.QMap中的数据都是成对出现的,第一个称为key(键),第二 ...

  4. qstring如何初始化_学习QT之QString详解

    学习QT之QString详解 QString类保存16位Unicode值,提供了丰富的操作.查询和转换函数.该类还进行了使用隐式共享.高效的内存分配策略等多方面的优化. 一.字符串常用操作 字符串的操 ...

  5. OpenCV Mat类详解和用法(官网原文)

    参考文章:OpenCV Mat类详解和用法 我马克一下,日后更 官网原文链接:https://docs.opencv.org/3.2.0/d6/d6d/tutorial_mat_the_basic_i ...

  6. 转载:c+string类详解

    C++ string 类详解 </h1><div class="clear"></div><div class="postBod ...

  7. JDBC学习笔记02【ResultSet类详解、JDBC登录案例练习、PreparedStatement类详解】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  8. JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】

    黑马程序员-JDBC文档(腾讯微云)JDBC笔记.pdf:https://share.weiyun.com/Kxy7LmRm JDBC学习笔记01[JDBC快速入门.JDBC各个类详解.JDBC之CR ...

  9. Android复习14【高级编程:推荐网址、抠图片上的某一角下来、Bitmap引起的OOM问题、三个绘图工具类详解、画线条、Canvas API详解(平移、旋转、缩放、倾斜)、矩阵详解】

    目   录 推荐网址 抠图片上的某一角下来 8.2.2 Bitmap引起的OOM问题 8.3.1 三个绘图工具类详解 画线条 8.3.16 Canvas API详解(Part 1) 1.transla ...

最新文章

  1. centos memcached php,centos系统为php安装memcached扩展步骤
  2. [专栏目录]-optee/TEE/TA笔记-目录
  3. 在PLSQL中,存储过程的输出参数(varchar2)最大支持多大
  4. 更换mysql_3分钟学会mysql数据库的逻辑架构原理
  5. pytorch迁移学习--模型建立的代码实现
  6. java基础杂谈(一)
  7. goc 介绍与源代码分析
  8. 渗透测试/应急演练过程中metasploit制作木马连接失败问题排查
  9. louvain算法 matlab,Community_BGLL_Matlab 复杂网络社团发现算法Louvain的 版本,简单实用,欢迎下载 272万源代码下载- www.pudn.com...
  10. 金蝶kis系统连接服务器,金蝶kis专业版如何设置连接服务器
  11. F - Ingenuous Cubrency ( UVa 11137 ,立方数之和,递推关系,算法进阶手册)
  12. mysql 一周签到表_最实用的考勤签到表(上下班签到表);
  13. 国外的android手机号码,Android - 手机号码格式化和删除国家/地区代码
  14. Windows11自带壁纸位置
  15. 中国运营商考虑用WiFi亭代替公共电话亭
  16. 计算机查找是什么意思,计算机的字长是什么意思?怎么查找一台计算机上的字长啊?...
  17. [网络收集]JS刷新页面总和!多种JS刷新页面代码!
  18. 每日一库之Go 强大而灵活的电子邮件库:email
  19. 文件服务器审计---首选Netwrix文件服务器审计工具
  20. 【多输入模型 Multiple-Dimension 数学原理分析以及源码详解 深度学习 Pytorch笔记 B站刘二大人 (6/10)】

热门文章

  1. 配置错误:未能使用提供程序“RsaProtectedConfigurationProvider”进行解密。提供程序返回错误信息为: 打不开 RSA 密钥容器。...
  2. nullnullGet previous business day
  3. java正则表达式 引用_java – 正则表达式检索引用的字符串和引用字符
  4. java中从str1中删除所有str2_Java中str1.equals(str2)和str1==str2的区别
  5. Java黑皮书课后题第9章:*9.5(使用GregorianCalendar类)Java API中有一个位于包java.util中的类GregorianCalendar
  6. SpringMVC-Controller怎么直接在页面上传递参数
  7. Win8装SQL2008需要离线安装 .Net3.5
  8. [转载] NoSQL开篇——为什么要使用NoSQL
  9. 1463. Happiness to People!
  10. MemoryStream 反序列化的报错问题