qt QSplitter详解

1、概述

QSplitter是Qt框架中的一个布局管理器类,它允许用户在应用程序窗口中创建可拖动的分隔器,以便动态地调整多个子窗口或控件的大小。QSplitter非常适合用于分割、重新排列和管理用户界面中的多个区域,提供了一种直观且灵活的方式来控制界面布局。

2、重要方法

QSplitter类提供了多种方法来管理和控制分隔器及其子控件:

  • 构造函数

    • QSplitter(Qt::Orientation orientation, QWidget *parent = nullptr):根据指定的方向(水平或垂直)创建一个QSplitter对象,并可选地指定一个父控件。
  • 添加和移除控件

    • void addWidget(QWidget *widget):将一个子控件添加到QSplitter中。
    • int indexOf(QWidget *widget):返回子控件在QSplitter中的索引位置。
    • void insertWidget(int index, QWidget *widget):在指定索引位置插入一个子控件。
    • void removeWidget(QWidget *widget):从QSplitter中移除一个子控件。
  • 设置和获取属性

    • void setOrientation(Qt::Orientation orientation):设置QSplitter的方向为水平或垂直。
    • Qt::Orientation orientation() const:获取QSplitter的当前方向。
    • void setOpaqueResize(bool opaque):设置分隔器在调整大小时是否显示为不透明的样式。
    • bool isOpaqueResize() const:检查分隔器在调整大小时是否显示为不透明。
    • void setSizes(const QList<int> &sizes):设置子控件的初始大小。
    • QList<int> sizes() const:获取当前子控件的大小。
    • int handleWidth() const:获取分隔器的宽度。
    • void setCollapsible(int index, bool collapsible):设置指定索引位置的子控件是否可以折叠。
    • bool isCollapsible(int index) const:检查指定索引位置的子控件是否可以折叠。
  • 布局和刷新

    • void refresh():重新布局和绘制分隔器及其子控件。

3、重要信号

  • splitterMoved(int pos,int index):当分割条被移动时发射
#include <QApplication>  
#include <QSplitter>  
#include <QTextEdit>  
#include <QFrame>  
#include <QHBoxLayout>  
#include <QWidget>  int main(int argc, char *argv[]) {  QApplication app(argc, argv);  // 创建一个主窗口  QWidget mainWindow;  mainWindow.setWindowTitle("QSplitter Example");  mainWindow.setFixedSize(800, 600);  // 创建一个水平布局  QHBoxLayout *layout = new QHBoxLayout(&mainWindow);  // 创建一个水平方向的QSplitter  QSplitter *horizontalSplitter = new QSplitter(Qt::Horizontal);  // 设置子控件的初始大小  horizontalSplitter->setSizes(QList<int>() << 100 << 200 << 300);  // 创建并添加子控件到水平QSplitter中  QFrame *leftFrame = new QFrame();  leftFrame->setStyleSheet("QFrame{background-color:rgb(255, 0, 0)}");  leftFrame->setMinimumWidth(100);  horizontalSplitter->addWidget(leftFrame);  QTextEdit *textEdit = new QTextEdit();  horizontalSplitter->addWidget(textEdit);  QSplitter *verticalSplitter = new QSplitter(Qt::Vertical);  verticalSplitter->setOpaqueResize(false);  QFrame *topRightFrame = new QFrame();  topRightFrame->setStyleSheet("QFrame{background-color:rgb(0, 255, 0)}");  verticalSplitter->addWidget(topRightFrame);  QTextEdit *bottomRightTextEdit = new QTextEdit();  verticalSplitter->addWidget(bottomRightTextEdit);  // 将垂直QSplitter添加到水平QSplitter中  horizontalSplitter->addWidget(verticalSplitter);  // 将水平QSplitter添加到主布局中  layout->addWidget(horizontalSplitter);  // 设置主窗口的布局  mainWindow.setLayout(layout);  // 显示主窗口  mainWindow.show();  return app.exec();  
}

觉得有帮助的话,打赏一下呗。。

           

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring Boot观察者模式实战

观察者模式简介 观察者模式&#xff08;Observer Pattern&#xff09;是一种行为设计模式&#xff0c;它定义了对象间的一种一对多的依赖关系&#xff0c;当一个对象状态发生改变时&#xff0c;所有依赖于它的对象都会得到通知并自动更新。这种模式也被称为发布-订阅模式、模型…

Java中消息队列——ActiveMQ、RabbitMQ、RocketMQ、Kafka

1.什么是消息中间件 消息中间件是一种专门的工具&#xff0c;帮助不同的应用程序通过发送和接收消息来进行交流。想象一下&#xff0c;一个公司里有多个部门&#xff08;如销售、财务和物流&#xff09;&#xff0c;它们需要共享信息。消息中间件就像一个信使&#xff0c;负责将…

mysql left join group_concat 主表丢失数据

问题出现的场景&#xff1a; 有一个主表 a&#xff0c;一个子表 b a表有两条数据&#xff0c;a表第一条数据在b表中有一条子数据&#xff0c;a表第二条数据在b表中有两条子数据。 现在想要查询出来a表的所有数据和a表的子表b的id&#xff0c;b的id 使用GROUP_CONCAT拼接 有…

深度学习在复杂系统中的应用

引言 复杂系统由多个相互作用的组成部分构成&#xff0c;这些部分之间的关系往往是非线性的&#xff0c;整体行为难以通过简单的线性组合来预测。这类系统广泛存在于生态学、气象学、经济学和社会科学等多个领域&#xff0c;具有动态演变、自组织、涌现现象以及多尺度与异质性…

Python爬虫的京东大冒险:如何高效获取商品详情的秘籍

在这个由代码编织的电商世界里&#xff0c;京东商品详情就像是被锁在高塔中的公主&#xff0c;等待着勇敢的Python爬虫骑士去解救。今天&#xff0c;我们要讲述的是如何成为一名Python爬虫骑士&#xff0c;携带你的代码长矛&#xff0c;穿梭在API的数据森林中&#xff0c;高效获…

【RESTful】RESTful API:最佳实践指南

目录 引言一、URL 设计1.1 动词 宾语1.2 动词的覆盖1.3 宾语必须是名词1.4 复数 URL1.5 避免多级 URL 二、状态码2.1 状态码必须精确2.2 2xx 状态码2.3 3xx 状态码2.4 4xx 状态码2.5 5xx 状态码 三、其他最佳实践3.1 版本管理3.2 使用合适的媒体类型3.3 详细的错误响应3.4 安全…

一些关于云电脑与虚拟化东西

前言 好久没有更新了&#xff0c;在进行自我校准。 云计算是什么&#xff1f; 云计算是一种模型&#xff0c;它使得用户能够随时随地、方便地、按需访问共享的可配置计算资源池&#xff08;例如&#xff0c;网络、服务器、存储、应用程序和服务&#xff09;&#xff0c;这些资…

服务器数据恢复—RAID5阵列中部分成员盘重组RAID5阵列后如何恢复原raid5阵列数据?

服务器数据恢复环境&#xff1a; 一台服务器挂接一台存储&#xff0c;该存储中有一组由5块硬盘组建的RAID5阵列。 服务器故障&#xff1a; 存储raid5阵列中有一块硬盘掉线。由于RAID5的特性&#xff0c;阵列并没有出现问题。工作一段时间后&#xff0c;服务器出现故障&#xff…

new/delete和malloc()/free()的区别及其使用

C系列----new/delete和malloc()/free()的区别 这篇文章我将深读刨析一下这二者的区别及其在使用过程中应该注意的事项 文章目录 C系列----new/delete和malloc()/free()的区别前言一、new/delete和malloc/free在操作自定义类型时的区别1.1、在属性和使用上的区别1.2、返回类型的…

我主编的电子技术实验手册(22)——RC并联电路

本专栏是笔者主编教材&#xff08;图0所示&#xff09;的电子版&#xff0c;依托简易的元器件和仪表安排了30多个实验&#xff0c;主要面向经费不太充足的中高职院校。每个实验都安排了必不可少的【预习知识】&#xff0c;精心设计的【实验步骤】&#xff0c;全面丰富的【思考习…

word mathml 创建粗体字母快捷键

在 mathml 中达到latex中 \mathbf{A} 的效果 由于word本身不支持这个命令&#xff0c;所以打算用快捷键实现 快捷键的功能是加粗光标前一个字目 1. Alt F8 打开宏&#xff0c;如果打不开可以尝试 Alt Fn F8 2. 输入 BoldPreviousCharacter 新建宏&#xff1a; Sub Bold…

开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序中积分使用价值的拓展策略

摘要&#xff1a;本文围绕开源 AI 智能名片 2 1 链动模式 S2B2C 商城小程序&#xff0c;深入探讨其积分使用价值的丰富策略。详细分析积分兑换礼品、会员升级、积分抵现等方式在该特定商城小程序环境下的应用特点、存在问题及对用户和商城的影响&#xff0c;旨在为商城的优化运…

Win10 连接到 Ubuntu 黑屏无法连接 使用Rustdesk显示 No Displays 没有显示器

Win10 连接到 Ubuntu 黑屏无法连接 使用Rustdesk显示 No Displays 没有显示器 解决办法安装虚拟显示器 安装xorg虚拟显示器 $ sudo apt install xserver-xorg-video-dummy # 提示错误依赖使用下面这个试试 $ sudo apt-get install xserver-xorg-video-dummy --fix-missing配…

苍穹外卖 查询订单明细

OrderController /*** 查询订单详情** param id* return*/GetMapping("/orderDetail/{id}")ApiOperation("查询订单详情")public Result<OrderVO> selectDetails(PathVariable Long id) {OrderVO orderVO orderService.selectDetails(id);return R…

Hadoop-002-部署并配置HDFS集群

集群规划 Hadoop HDFS的角色包含 NameNode(主节点管理者)、DataNode(从节点工作者)、SeconddaryNameNode(从节点辅助) 节点CPU内存hadoop-11C4Ghadoop-21C2Ghadoop-31C2G 一、下载上传Hadoop包 注意: 登录hadoop-1节点root用户执行 1、官网下载安装包后上传 到hadoop-1服务…

C/C++中的基本数据类型

在C语言中&#xff0c;支持下面这些基本数据类型&#xff1a; 数据类型占用字节取值范围备注short2-32768 ~ 32767短整型int4-2147483648 ~ 2147483647整型long4 / 8-2147483648 ~ 2147483647-9223372036854775808 ~ 9223372036854775807长整型&#xff1a;在windows中或32位l…

BOOST库配置到VS2022详细操作步骤和可能出现的错误解决方法

文章目录 BOOST库配置上述的细节操作出现的错误错误1错误2 其余内容 BOOST库配置 配置过程见BOOST库配置到VS2022&#xff08;保姆级教程&#xff09;主要借鉴 C/C Windows环境下 boost 安装使用教程【学习笔记】 Boost库各个版本下载地址 上述的细节操作 第一点 我的操作步…

css实现边框双色凹凸半圆

整体效果如下图&#xff1a; 结构代码&#xff1a; <div classline-outside-wrap><div classwrap><img src../img/avatar2x.png/><div classcontent-wrap></div></div></div> 内凹框实现&#xff1a; .content-wrap{width:100%;he…

字符串统计(Python)

接收键盘任意录入&#xff0c;分别统计大小写字母、数字及其它字符数量&#xff0c;打印输出。 (笔记模板由python脚本于2024年11月02日 08:23:31创建&#xff0c;本篇笔记适合熟悉python字符串并懂得基本编程技法的coder翻阅) 【学习的细节是欢悦的历程】 Python 官网&#xf…

[代码随想录打卡]Day2:209.长度最小的子数组 59.螺旋矩阵II 区间和 开发商购买土地 总结

双指针&#xff1a;快慢指针、对撞指针、滑动窗口。相关博客&#xff1a;双指针算法详解&#xff08;快慢指针、对撞指针、滑动窗口&#xff09; 209.长度最小的子数组 题目&#xff1a;给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于…