【QT入门】 Qt代码创建布局之分裂器布局详解

往期回顾:

【QT入门】 Qt内存管理机制详解-CSDN博客

【QT入门】 Qt代码创建布局之水平布局、竖直布局详解-CSDN博客

【QT入门】 Qt代码创建布局之栅格布局详解-CSDN博客

 【QT入门】 Qt代码创建布局之分裂器布局详解

一、什么是分裂器布局

在Qt中,分裂器布局(SplitterLayout)是一种常用的布局方式,用于将界面分割成多个可调整大小的区域,用户可以通过拖动分隔条来调整各个区域的大小。分裂器布局通常用于实现可拖动的分割窗格,使用户可以自由调整界面中各个部分的大小比例

二、如何用代码创建分裂器布局

1、QSplitter

与水平、竖直布局类似的,创建栅格布局也需要用到相关的类QSplitter。QSplitter是 Qt 提供的分割器类,用于分割和管理子部件的布局。

水平分裂器
QSplitter* pHSplitter = new QSplitter(Qt::Horizontal, this);
竖直分裂器
QSplitter* pVSpltter = new QSplitter(Qt::Vertical, pHSplitter);

分裂器也是QWidget的子类,因此分裂器也有addWidget方法,而布局也可以使用addWidget往布局里添加分裂器。

三、具体代码示例

1、界面效果展示:

我们可以通过拉动控件条,自由实现三个Wdiget窗口的大小比例

2、代码分析:

 2.1、创建水平布局管理器类
QHBoxLayout *pHLay = new QHBoxLayout(this);

QHBoxLayout 是 Qt 提供的水平布局管理器类,用于管理水平方向上的子部件布局。

new QHBoxLayout(this) 创建一个水平布局管理器,并将当前窗口设为其父对象,以便管理窗口中的子部件的水平布局。 

2.2、创建水平分割器 
QSplitter * pHSplitter = new QSplitter(Qt::Horizontal,this);

QSplitter 是 Qt 提供的分割器类,用于分割和管理子部件的布局。

new QSplitter(Qt::Horizontal,this) 创建一个水平分割器,并将当前窗口设为其父对象,以便管理水平方向上的子部件布局。 

2.3、设置分割条在调整大小时是否显示实际内容 
pHSplitter->setOpaqueResize(false);

setOpaqueResize(false) 是 QSplitter 类的方法,用于设置分割条在调整大小时是否显示实际内容。此处设置为 false ,分割条在调整大小时不会显示实际内容。

2.4、设置部件的样式表
pLeftWidget->setStyleSheet("background-color:rgb(55,55,55)");

setStyleSheet() 是 QWidget 类的方法,用于设置部件的样式表,这里将左侧部件的背景颜色设置为灰色。 

2.5、设置部件最小宽度 
pLeftWidget->setMinimumWidth(200);

设置左侧部件的最小宽度为200像素,确保部件不会缩小到比指定宽度更窄。 

四、完整代码示例

 注释都写得很详细,大家可以多看看。

    // 设置窗口标题
    this->setWindowTitle("Qt分裂器布局_c++代码");

    // 设置窗口固定大小
    this->setFixedSize(600,500);

    //整体用水平布局
    QHBoxLayout *pHLay = new QHBoxLayout(this);

    //整体的水平分裂器
    QSplitter * pHSplitter = new QSplitter(Qt::Horizontal,this);
    pHSplitter->setOpaqueResize(false);// 设置分割条不透明
    QWidget * pLeftWidget = new QWidget(this);
    pLeftWidget->setStyleSheet("background-color:rgb(55,55,55)");// 设置背景颜色
    pLeftWidget->setMinimumWidth(200);// 设置最小宽度

    //在水平分割器中添加左侧部件
    pHSplitter->addWidget(pLeftWidget);

    //创建垂直分裂器作为右侧内容
    //注意参数pHSplitter,表示父指针
    QSplitter * pVSplitter = new QSplitter(Qt::Vertical,pHSplitter);

    //在拖动到位并弹起鼠标后再显示分割条
    pVSplitter->setOpaqueResize(false);

    //右侧顶部部件
    QWidget *pRightTopWidget = new QWidget(this);
    pRightTopWidget->setStyleSheet("background-color:rgb(155,55,55)");// 设置背景颜色

    //右侧底部部件为文本浏览器
    QTextBrowser * pRightBottom = new QTextBrowser(this);

     // 在垂直分割器中添加右侧顶部和底部部件
    pVSplitter->addWidget(pRightTopWidget);
    pVSplitter->addWidget(pRightBottom);

    // 在水平分割器中添加垂直分割器
    pHSplitter->addWidget(pVSplitter);

    //布局添加分裂器
    pHLay->addWidget(pHSplitter);

    //设置整体布局
    setLayout(pHLay);

}

以上就是分裂器布局的综合运用。分裂器布局可以实现自由调整界面中各个部分的大小比例,个人觉得是一种非常实用的布局方式。

都看到这里了,点个赞再走呗朋友~

加油吧,预祝大家变得更强!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/489032.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

⨯ EPERM: operation not permitted, link ...

新增区块链相关包后,项目在部署的时候报错,报错内容如下: 报错信息: ⨯ EPERM: operation not permitted, link /Users/XXX/.cache/act/be662ca67b3f7553/hostexecutor/node_modules/bigint-buffer/build/node_gyp_bins/python…

11.测试教程-自动化测试selenium-3

文章目录 1.unittest框架解析2.批量执行脚本2.1构建测试套件2.2用例的执行顺序2.3忽略用例执行 3.unittest断言4.HTML报告生成5.异常捕捉与错误截图6.数据驱动 大家好,我是晓星航。今天为大家带来的是 自动化测试selenium第三节 相关的讲解!&#x1f600…

基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告

基于javaweb(springboot)汽车配件管理系统设计和实现以及文档报告 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐…

【机器学习】引领未来的力量:技术革新与应用探索

🧑 作者简介:阿里巴巴嵌入式技术专家,深耕嵌入式人工智能领域,具备多年的嵌入式硬件产品研发管理经验。 📒 博客介绍:分享嵌入式开发领域的相关知识、经验、思考和感悟。提供嵌入式方向的学习指导、简历面…

端口的学习

端口是什么口?【网络常识3】_哔哩哔哩_bilibili 简化后的数据包: 软件和端口是1对多的关系。 http默认端口是80 https默认端口是443

二十一、软考-系统架构设计师笔记-真题解析-2019年真题

软考-系统架构设计师-2019年上午选择题真题 考试时间 8:30 ~ 11:00 150分钟 1.前趋图(Precedence Graph)是一个有向无环图,记为: → {(Pi,Pj)Pi mustcomplete before Pj may start}。假设系统中进程P{P1,P2,P3,P4,P5,P6,P7,P8},且进程的前趋图如下&…

(2022级)成都工业学院Java程序设计(JAVA)实验二:类和对象

写在前面 1、基于2022级软件工程/计算机科学与技术实验指导书 2、代码仅提供参考 3、如果代码不满足你的要求,请寻求其他的途径 运行环境 window11家庭版 IntelliJ IDEA 2023.2.2 jdk17.0.6 实验要求 1、 控制台菜单。在 Exp02_x 类中添加一个方法 menu_x&…

【Chrome控制台】network选项卡的使用

首先打开调试面板「windows:F12;mac:commandoptioni」,找到Network选项卡,其中是对网络相关的数据信息。 录制 控制台内容区域左上角红色按钮就是录制按钮,默认是开启状态,表示监听整个页面运行过程中所产…

【直播课】2024年PostgreSQL CM认证实战培训课程于4月27日开课!

课程介绍 了解关注开源技术,学习PG以点带面 Linux/Andriod(操作系统)、Apache/Tomcat(应用服务器)、OpenStack/KVM(虚拟化)、Docker/K8S(容器化)、Hadoop(大…

【Java - 框架 - Lombok】(2) SpringBoot整合Lombok完成日志的创建使用 - 快速上手;

"SpringBoot"整合"Lombok"完成日志的创建使用 - 快速上手; 环境 “Java"版本"1.8.0_202”;“Lombok"版本"1.18.20”;“Spring Boot"版本"2.5.9”;“Windows 11 专业版_22621…

泛型编程的启蒙之旅

个人主页:日刷百题 系列专栏:〖C/C小游戏〗〖Linux〗〖数据结构〗 〖C语言〗 🌎欢迎各位→点赞👍收藏⭐️留言📝 ​ ​ 讲模板之前呢,我们先来谈谈泛型编程: 泛型编程:编写与类…

【LeetCode热题100】98. 验证二叉搜索树(二叉树)递归阶段总结1

一.题目要求 给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。 有效二叉搜索树定义如下: 节点的左子树只包含 小于 当前节点的数。节点的右子树只包含 大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。 二.题目难度…

Keycloak介绍

1.什么是Keycloak Keycloak是一个开源的身份和访问管理解决方案,它提供了单点登录(SSO)功能。 Keycloak 支持多种标准协议,包括 OpenID Connect 和 OAuth 2.0,这使得它能够与各种服务进行集成,以提供身份…

几个常用的AI工具

人工智能大模型的出现对人类社会产生了深远的影响,这些影响既包括积极的方面,也包括一些潜在的挑战: 1. **提高效率**:AI大模型能够快速处理大量数据,提高工作效率,尤其在数据分析、自然语言处理等领域。 2. **辅助决…

Spring - AOP/事务 实现原理

AOP 基本概念 官方文档: Aspect Oriented Programming with Spring Spring AOP supports the following AspectJ pointcut designators (PCD) for use in pointcut expressions: within - limits matching to join points within certain types (simply the exec…

怎么建设数据中台?详解数据中台架构内的三大平台

一、什么是数据中台? 要知道“中台”是什么,就得先了解“前台”和“后台”。 前台,就是我们日常使用的过程中可以直接看到和感知到的东西,比如你打开某东app买了个3080显卡,在这个过程中你看到的页面以及搜索、点击详…

考研数学|武忠祥高数全年学习包分享

u1s1,武忠祥老师的课程真的不错,宝藏级老师 其实我觉得没必要对比每一个考研数学老师,汤家凤还有张宇以及武忠祥都是非常受欢迎的老师,也都很有实力,只不过讲课的风格有所区别。 比如汤家凤老师就像是高中那种不苟言…

洁净环境监测相关法规指南汇总

一 洁净级别确认 1. 用于生产无菌药品的洁净室和洁净空气设备如单向流系统(UDAF)、限制进入屏障系统(RABS)和隔离器,应根据所需环境特性进行确认。生产操作需要在适当洁净度级别的环境中进行,以降低粒子或…

M1 mac安装 Parallels Desktop 18 激活

M1 mac安装 Parallels Desktop 18 激活 下载安装Parallels Desktop 18.1.1 (53328) 激活1. 拷贝prl_disp_service2. 在终端打开Crack所在位置3. 输入命令,激活成功 下载 安装包和激活文件下载地址 链接: https://pan.baidu.com/s/1EjT7xeEDcntIIoOvvhBDfg?pwd9pue …

智能无人集群系统跨域协同技术研究现状与展望

源自:中国工程院院刊 作者:江碧涛,温广辉,周佳玲,郑德智 “人工智能技术与咨询” 发布 编者按 随着智能化技术和无人系统技术的快速发展,智能无人集群系统跨域协同的概念应运而生并得到了广泛关注与深…