学习一下Qt中的分裂器以及为什么要使用分裂器?
关于分裂器的使用和内容这篇文章写的很详细了[QT_043]Qt学习之分裂器(QSplitter)-CSDN博客
我就说一下为什么已经有布局器要还使用分裂器
在 Qt 中,布局时使用分裂器(QSplitter)主要有以下几个方面的好处:
提供灵活的用户交互体验
动态调整子部件大小:分裂器允许用户在运行时动态地调整子部件的大小。例如,在一个包含文本编辑器和文件浏览器的应用程序中,用户可能有时需要更多的空间来查看文件列表,有时又需要更大的区域来编辑文本。使用分裂器,用户可以通过拖动分割条轻松地改变两个部件的相对大小,以满足不同的使用场景需求,提供了高度的交互灵活性。
自适应布局:当窗口大小发生变化时,分裂器可以根据用户之前调整的比例自适应地重新分配子部件的空间。比如,用户将窗口拉大,分裂器会按照之前设定的相对比例同时增大各个子部件的大小,保证界面布局的合理性和一致性。
简化布局管理
嵌套布局:分裂器可以嵌套使用,能够处理复杂的布局结构。例如,一个主窗口可能包含一个水平分裂器,水平分裂器的一侧又包含一个垂直分裂器。通过这种嵌套方式,可以方便地创建出复杂的多面板布局,而不需要手动编写大量的代码来管理各个部件的位置和大小。
与其他布局管理器配合:分裂器可以与 Qt 的其他布局管理器(如 QVBoxLayout、QHBoxLayout 等)结合使用。可以先使用布局管理器对一些小部件进行初步的布局,然后将这些布局好的部件组合放入分裂器中,进一步实现更灵活的布局。这样可以充分利用不同布局管理器的优势,简化布局的设计和实现过程。
提高界面的可维护性和扩展性
代码复用和修改:使用分裂器可以将界面的布局逻辑进行模块化。每个子部件的布局可以独立处理,当需要对某个子部件进行修改或替换时,不会影响到其他子部件的布局和分裂器的整体结构。这使得代码的复用性更高,维护和修改更加方便。
适应不同的屏幕分辨率:在不同的屏幕分辨率下,使用分裂器可以更好地适应界面的显示需求。分裂器可以根据屏幕大小自动调整子部件的大小和比例,确保界面在各种分辨率下都能保持良好的显示效果,提高了应用程序的兼容性和可用性。
增强视觉效果和用户体验一致性
清晰的分隔标识:分裂器的分割条为用户提供了直观的视觉分隔标识,使用户能够清楚地看到不同子部件之间的界限。这种清晰的分隔有助于用户更好地理解界面的结构和功能,提高了界面的可读性和易用性。
统一的操作方式:在不同的应用程序中,分裂器的操作方式通常是一致的,用户可以通过拖动分割条来调整部件大小。这种统一的操作方式降低了用户的学习成本,使用户能够快速上手并熟悉应用程序的界面操作。
给个具体的例子::
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QSplitter>
#include <QTextEdit>QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:Ui::MainWindow *ui;QSplitter *splitter;QTextEdit *textEdit1;QTextEdit *textEdit2;
};
#endif // MAINWINDOW_H
mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);// 创建一个水平分裂器splitter = new QSplitter(Qt::Horizontal, this);// 创建两个 QTextEdit 部件textEdit1 = new QTextEdit(splitter);textEdit1->setPlainText("这是第一个文本编辑框。");textEdit2 = new QTextEdit(splitter);textEdit2->setPlainText("这是第二个文本编辑框。");// 将分裂器设置为主窗口的中央部件setCentralWidget(splitter);
}MainWindow::~MainWindow()
{delete ui;
}
#include "mainwindow.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);MainWindow w;w.show();return a.exec();
}
代码解释
-
mainwindow.h文件:- 包含必要的头文件,如
QSplitter和QTextEdit。 - 定义
MainWindow类,包含指向QSplitter和两个QTextEdit部件的指针。
- 包含必要的头文件,如
-
mainwindow.cpp文件:- 在构造函数中,创建一个水平方向的
QSplitter对象。 - 创建两个
QTextEdit部件,并将它们添加到分裂器中。 - 为每个
QTextEdit设置一些初始文本。 - 将分裂器设置为主窗口的中央部件,这样分裂器及其子部件就会显示在主窗口中。
- 在构造函数中,创建一个水平方向的
-
main.cpp文件:- 创建
QApplication对象,启动应用程序。 - 创建
MainWindow对象并显示它。
- 创建
运行效果
当你运行这个程序时,会看到一个包含两个 QTextEdit 部件的窗口,中间有一个垂直的分割条。你可以用鼠标拖动这个分割条,动态地调整两个 QTextEdit 部件的大小。
相关文章:
学习一下Qt中的分裂器以及为什么要使用分裂器?
关于分裂器的使用和内容这篇文章写的很详细了[QT_043]Qt学习之分裂器(QSplitter)-CSDN博客 我就说一下为什么已经有布局器要还使用分裂器 在 Qt 中,布局时使用分裂器(QSplitter)主要有以下几个方面的好处ÿ…...
Xshell链接Linux机器更换jdk版本
都25年了,不会还有人在用 jdk1.8 吧? 那么问题来了,如果公司让你更新机器上的jdk版本,你又刚好是一个小白没操作过,怎么办?别急,步骤这就奉上~ 编辑 .bashrc 或 .zshrc 配置文件: 如果你使用的…...
2025.3.3总结
周一这天,我约了绩效教练,主要想了解专业类绩效的考核方式以及想知道如何拿到一个更好的绩效。其他的岗位并不是很清楚,但是专业类的岗位,目前采取绝对考核,管理层和专家岗采取相对考核,有末尾淘汰。 通过…...
如何应用大模型 — 大模型使用范式
从OpenAI发布ChatGPT开始,大模型就开始受到大家关注,到DeepSeek-R1出现,大家的关注达到了顶峰,越来越多的企业,机构,学校,政府部门希望接入大模型,希望通过大模型来提升效率…...
DeepSeek本机部署(基于Ollama和Docker管理)
目录 一、ollama 与 docker 简介 (一)ollama(Ollama) (二)docker 二、利用 ollama 和 docker 配置 deepseek-r1 的准备工作 (一)硬件需求 (二)软件安装 三、配置 deepseek-r1…...
C++复试笔记(一)
Setw 是C中用于设置输出字段宽度的函数。当使用 setw(3) 时,它会设置紧接着的输出字段的最小宽度为3个字符。如果字段内容长度小于3,则会在左侧填充空格以达到指定宽度;如果内容长度大于或等于3,则全部内容将被输出,…...
如何让一个类作为可调用对象被thread调用?
如何让一个类作为可调用对象,被 std::thread 调用 在 C 中,可以让一个类对象作为可调用对象(Callable Object),然后用 std::thread 进行调用。要实现这一点,主要有三种方法: 重载 operator()&…...
学习小程序开发--Day1
项目学习开篇 项目架构 项目进程 创建uni-app项目 通过HBuilderX创建 小结 page.json 和 tabBar 目录文件 pages.json的配置...
“量子心灵AI“的监控仪表盘 - javascript网页设计案例
【前端实战】基于Three.js和Chart.js打造未来科技风AI监控仪表盘 本文通过AI辅助开发,详细记录了一个高级前端项目的完整实现过程。文章包含核心代码片段、技术要点及遇到的问题与解决方案。适合有一定前端基础的开发者学习参考。 1. 项目概述 本文详细介绍了一个名…...
Redis 中 string 和 list 的原理说明
Redis 中 string 和 list 的底层实现 Redis有5种基础数据结构,对应的value分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合) Redis 对象头结构体: struct RedisObject {int4 type; // 4bits 对象的基本类型…...
JVM常用概念之String.intern()
问题 String.intern()的工作原理?我们应该如何使用它? 基础知识 字符串池(String Pool) String类在我们日常编程工作中是使用频率非常高的一种对象类型。JVM为了提升性能和减少内存开销,避免字符串的重复创建,其维…...
DeepLabv3+改进6:在主干网络中添加SegNext_Attention|助力涨点
🔥【DeepLabv3+改进专栏!探索语义分割新高度】 🌟 你是否在为图像分割的精度与效率发愁? 📢 本专栏重磅推出: ✅ 独家改进策略:融合注意力机制、轻量化设计与多尺度优化 ✅ 即插即用模块:ASPP+升级、解码器 PS:订阅专栏提供完整代码 目录 论文简介 步骤一 步骤二…...
亚信安全发布2024威胁年报和2025威胁预测
在当今数字化时代,网络空间已成为全球经济、社会和国家安全的核心基础设施。随着信息技术的飞速发展,网络连接了全球数十亿用户,推动了数字经济的蓬勃发展,同时也带来了前所未有的安全挑战。2024年,网络安全形势愈发复…...
深入理解 DOM 元素
深入理解 DOM 元素:构建动态网页的基石 在网页开发的世界里,DOM(Document Object Model,文档对象模型)元素宛如一座桥梁,连接着静态的 HTML 结构与动态的 JavaScript 交互逻辑。它让原本呆板的网页变得鲜活…...
[数据分享第七弹]全球洪水相关数据集
洪水是一种常见的自然灾害,在全球范围内造成了极为严重的威胁。近年来,针对洪水事件的检测分析,以及对于洪水灾害和灾后恢复能力的研究日渐增多,也产生了众多洪水数据集。今天,我们一起来收集整理一下相关数据集。&…...
SpringBoot POST和GET请求
1. 什么是 HTTP 请求? HTTP 协议:超文本传输协议,用于客户端和服务器之间的通信。 常见 HTTP 方法: GET:获取资源POST:提交数据PUT:更新资源DELETE:删除资源 2. GET 请求详解 作…...
MySQL 面试篇
MySQL相关面试题 定位慢查询 **面试官:**MySQL中,如何定位慢查询? 我们当时做压测的时候有的接口非常的慢,接口的响应时间超过了2秒以上,因为我们当时的系统部署了运维的监控系统Skywalking ,在展示的报表中可以看到…...
【Andrej Karpathy 神经网络从Zero到Hero】--2.语言模型的两种实现方式 (Bigram 和 神经网络)
目录 统计 Bigram 语言模型质量评价方法 神经网络语言模型 【系列笔记】 【Andrej Karpathy 神经网络从Zero到Hero】–1. 自动微分autograd实践要点 本文主要参考 大神Andrej Karpathy 大模型讲座 | 构建makemore 系列之一:讲解语言建模的明确入门,演示…...
Android MVC、MVP、MVVM三种架构的介绍和使用。
写在前面:现在随便出去面试Android APP相关的工作,面试官基本上都会提问APP架构相关的问题,用Java、kotlin写APP的话,其实就三种架构MVC、MVP、MVVM,MVC和MVP高度相似,区别不大,MVVM则不同&…...
python使用django搭建图书管理系统
大家好,你们喜欢的梦幻编织者回来了 随着计算机网络和信息技术的不断发展,人类信息交流的方式从根本上发生了改变,计算机技术、信息化技术在各个领域都得到了广泛的应用。图书馆的规模和数量都在迅速增长,馆内藏书也越来越多,管理…...
JavaScript系列06-深入理解 JavaScript 事件系统:从原生事件到 React 合成事件
JavaScript 事件系统是构建交互式 Web 应用的核心。本文从原生 DOM 事件到 React 的合成事件,内容涵盖: JavaScript 事件基础:事件类型、事件注册、事件对象事件传播机制:捕获、目标和冒泡阶段高级事件技术:事件委托、…...
大话机器学习三大门派:监督、无监督与强化学习
以武侠江湖为隐喻,系统阐述了机器学习的三大范式:监督学习(少林派)凭借标注数据精准建模,擅长图像分类等预测任务;无监督学习(逍遥派)通过数据自组织发现隐藏规律,…...
win11编译llama_cpp_python cuda128 RTX30/40/50版本
Geforce 50xx系显卡最低支持cuda128,llama_cpp_python官方源只有cpu版本,没有cuda版本,所以自己基于0.3.5版本源码编译一个RTX 30xx/40xx/50xx版本。 1. 前置条件 1. 访问https://developer.download.nvidia.cn/compute/cuda/12.8.0/local_…...
FY-3D MWRI亮温绘制
1、FY-3D MWRI介绍 风云三号气象卫星(FY-3)是我国自行研制的第二代极轨气象卫星,其有效载荷覆 盖了紫外、可见光、红外、微波等频段,其目标是实现全球全天候、多光谱、三维定量 探测,为中期数值天气预报提供卫星观测数…...
Codeforces1929F Sasha and the Wedding Binary Search Tree
目录 tags中文题面输入格式输出格式样例输入样例输出说明 思路代码 tags 组合数 二叉搜索树 中文题面 定义一棵二叉搜索树满足,点有点权,左儿子的点权 ≤ \leq ≤ 根节点的点权,右儿子的点权 ≥ \geq ≥ 根节点的点权。 现在给定一棵 …...
HBuilder X 使用 TortoiseSVN 设置快捷键方法
HBuilder X 使用 TortoiseSVN 设置快捷键方法 单文件:(上锁,解锁,提交,更新) 安装好 TortoiseSVN ,或者 按图操作: 1,工具栏中 【自定义快捷键】 2,点击 默认的快捷键设置&…...
Java jar包后台运行方式详解
目录 一、打包成 jar 文件二、后台运行 jar 文件三、示例四、总结在 Java 开发中,我们经常需要将应用程序打包成可执行的 jar 文件,并在后台运行。这种方式对于部署长时间运行的任务或需要持续监听事件的应用程序非常重要。本文将详细介绍如何实现 Java jar 包的后台运行,并…...
Refreshtoken 前端 安全 前端安全方面
网络安全 前端不需要过硬的网络安全方面的知识,但是能够了解大多数的网络安全,并且可以进行简单的防御前两三个是需要的 介绍一下常见的安全问题,解决方式,和小的Demo,希望大家喜欢 网络安全汇总 XSSCSRF点击劫持SQL注入OS注入请求劫持DDOS 在我看来,前端可以了解并且防御前…...
Mysql5.7-yum安装和更改mysql数据存放路径-2020年记录
记录下官网里用yum rpm源安装mysql, 1 官网下载rpm https://dev.mysql.com/downloads/repo/yum/ https://dev.mysql.com/doc/refman/5.7/en/linux-installation-yum-repo.html(附官网操作手册) wget https://repo.mysql.com//mysql80-community-release…...
[项目]基于FreeRTOS的STM32四轴飞行器: 七.遥控器按键
基于FreeRTOS的STM32四轴飞行器: 七.遥控器 一.遥控器按键摇杆功能说明二.摇杆和按键的配置三.按键扫描 一.遥控器按键摇杆功能说明 两个手柄四个ADC。 左侧手柄: 前后推为飞控油门,左右推为控制飞机偏航角。 右侧手柄: 控制飞机飞行方向&a…...
