Windows图形界面(GUI)-QT-C/C++ - QT MDI Area

  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

一、概述

二、使用场景

1. 多文档编辑器

2. 多窗口应用程序

3. 多视图应用程序

三、常见样式

1. 子窗口管理

2. 布局管理

四、属性设置

1. 添加子窗口

2. 移除子窗口

3. 设置活动子窗口

4. 获取活动子窗口

5. 获取所有子窗口

6. 平铺子窗口

7. 层叠子窗口

8. 子窗口激活信号


一、概述

QMdiArea 是 Qt 框架中用于实现多文档界面(MDI,Multiple Document Interface)的核心组件。它允许在一个主窗口中管理多个子窗口,每个子窗口可以独立显示和操作。QMdiArea 广泛应用于多文档编辑器、多窗口应用程序和多视图应用程序中,为用户提供高效的窗口管理功能。


二、使用场景

1. 多文档编辑器

在多文档编辑器中,用户通常需要同时打开和编辑多个文档。QMdiArea 可以管理多个子窗口,每个子窗口显示一个文档,用户可以通过切换子窗口快速访问不同的文档。例如,文本编辑器、代码编辑器等。

2. 多窗口应用程序

在多窗口应用程序中,用户需要在一个主窗口中同时操作多个子窗口。QMdiArea 提供了子窗口的添加、删除、排列等功能,方便用户管理多个窗口。例如,图形编辑软件、数据分析软件等。

3. 多视图应用程序

在多视图应用程序中,用户需要在一个主窗口中同时查看多个视图。QMdiArea 可以管理多个子窗口,每个子窗口显示一个视图,用户可以通过切换子窗口查看不同的数据或监控信息。例如,监控系统、数据可视化系统等。


三、常见样式

1. 子窗口管理

  • 添加子窗口:使用 addSubWindow(QWidget *widget) 方法向 QMdiArea 中添加一个新的子窗口。

  • 删除子窗口:使用 removeSubWindow(QWidget *widget) 方法从 QMdiArea 中移除一个子窗口。

  • 激活子窗口:使用 setActiveSubWindow(QMdiSubWindow *window) 方法设置当前活动的子窗口。

2. 布局管理

  • 平铺子窗口:使用 tileSubWindows() 方法将所有子窗口平铺排列。

  • 层叠子窗口:使用 cascadeSubWindows() 方法将所有子窗口层叠排列。


四、属性设置

QMdiArea 提供了丰富的属性设置方法,开发者可以通过这些方法灵活地管理子窗口。

1. 添加子窗口

QMdiSubWindow *subWindow = new QMdiSubWindow;
QTextEdit *textEdit = new QTextEdit;
subWindow->setWidget(textEdit);
subWindow->setWindowTitle("SubWindow");
mdiArea->addSubWindow(subWindow);
subWindow->show();

2. 移除子窗口

mdiArea->removeSubWindow(subWindow);

3. 设置活动子窗口

mdiArea->setActiveSubWindow(subWindow);

4. 获取活动子窗口

QMdiSubWindow *activeWindow = mdiArea->activeSubWindow();

5. 获取所有子窗口

QList<QMdiSubWindow *> subWindows = mdiArea->subWindowList();

6. 平铺子窗口

mdiArea->tileSubWindows();

7. 层叠子窗口

mdiArea->cascadeSubWindows();

8. 子窗口激活信号

connect(mdiArea, &QMdiArea::subWindowActivated, this, &MyClass::onSubWindowActivated);

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

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

相关文章

游戏引擎 Unity - Unity 下载与安装

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…

AIGC(生成式AI)试用 20 -- deepseek 初识

>> 基本概念 Ollama -- 运行大模型&#xff0c;管理运行AI大模型的工具&#xff0c;用来安装布置DeepSeek https://ollama.com/ , Get up and running with large language models. AnythingLLM -- 大模型增强应用&#xff0c;GUI大模型交互程序 Download AnythingLLM …

STM32 DMA+AD多通道

接线图 代码配置 ADC单次扫描DMA单次转运模式 uint16_t AD_Value[4]; //DMAAD多通道 void DMA_Config(void) {//定义结构体变量 GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量 ADC_InitTypeDef ADC_InitStructure; //定义ADC结构体变量 DMA_InitTypeDef DMA_In…

【Java】位图 布隆过滤器

位图 初识位图 位图, 实际上就是将二进制位作为哈希表的一个个哈希桶的数据结构, 由于二进制位只能表示 0 和 1, 因此通常用于表示数据是否存在. 如下图所示, 这个位图就用于标识 0 ~ 14 中有什么数字存在 可以看到, 我们这里相当于是把下标作为了 key-value 的一员. 但是这…

【工欲善其事】利用 DeepSeek 实现复杂 Git 操作:从原项目剥离出子版本树并同步到新的代码库中

文章目录 利用 DeepSeek 实现复杂 Git 操作1 背景介绍2 需求描述3 思路分析4 实现过程4.1 第一次需求确认4.2 第二次需求确认4.3 第三次需求确认4.4 V3 模型&#xff1a;中间结果的处理4.5 方案验证&#xff0c;首战告捷 5 总结复盘 利用 DeepSeek 实现复杂 Git 操作 1 背景介绍…

BGP路径属性

公认必遵循 BGP必须都能识别&#xff0c;且必须发送报文必须包含 Origin&#xff1a;起源属性&#xff0c;I,E,&#xff1f;三种&#xff0c;I是BGP通过IGP协议学到的路由&#xff08;比如ospf&#xff0c;isis&#xff0c;rip&#xff09;&#xff0c;E是从EGP协议学到的&am…

Vue 图片引用方式详解:静态资源与动态路径访问

目录 前言1. 引用 public/ 目录2. assets/ 目录3. 远程服务器4. Vue Router 动态访问5. 总结6. 扩展&#xff08;图片不显示&#xff09; 前言 &#x1f91f; 找工作&#xff0c;来万码优才&#xff1a;&#x1f449; #小程序://万码优才/r6rqmzDaXpYkJZF 在 Vue 开发中&#x…

【网络编程】Java高并发IO模型深度指南:BIO、NIO、AIO核心解析与实战选型

​​ 目录 一、引言1.1 本文目标与适用场景1.2 什么是IO模型&#xff1f;阻塞 IO 模型非阻塞 IO 模型IO 多路复用模型信号驱动 IO 模型异步 IO 模型 二、基础概念解析2.1 IO模型的分类与核心思想IO模型的分类核心思想分类对比与选择依据技术示意图 2.2 同步 vs 异步 | 阻塞 vs…

基序和纯度分数的计算

以下对这两个概念的详细解释&#xff1a; 基序 纯度分数 PWM矩阵的来源 为什么会有PWM矩阵&#xff1f; 一个特定的转录因子&#xff08;TF&#xff09;的结合位点的基序&#xff08;motif&#xff09;并不是唯一的。实际上&#xff0c;TF结合位点通常具有一定的序列变异性&a…

算法日记11:SC63(离散化)

一、题目 二、题解 法一&#xff1a;前缀和&#xff08;会炸&#xff09; 对于这道题目&#xff0c;我们的第一个朴素想法就是用前缀和来进行简化操作&#xff0c;这个思路非常简单&#xff0c;就是前缀和的标准模板题&#xff0c;代码如下 void solve() {int n,q;cin>&g…

w185客户关系管理系统

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

[STM32 标准库]EXTI应用场景 功能框图 寄存器

一、EXTI 外部中断在嵌入式系统中有广泛的应用场景&#xff0c;如按钮开关控制&#xff0c;传感器触发&#xff0c;通信接口中断等。其原理都差不多&#xff0c;STM32会对外部中断引脚的边沿进行检测&#xff0c;若检测到相应的边沿会触发中断&#xff0c;在中断中做出相应的处…

Windows下怎么安装FFFmpeg呢?

在Windows下使用Open-webui报错&#xff0c;说Couldnt find ffmpeg or avconv,解决open-webui报错Couldn‘t find ffmpeg or avconv-CSDN博客于是尝试解决问题&#xff0c;那么Windows下怎么安装FFFmpeg呢&#xff1f; 尝试了两种方法。 第一种方法pip安装&#xff08;失败&…

Hive on Spark优化

文章目录 第1章集群环境概述1.1 集群配置概述1.2 集群规划概述 第2章 Yarn配置2.1 Yarn配置说明2.2 Yarn配置实操 第3章 Spark配置3.1 Executor配置说明3.1.1 Executor CPU核数配置3.1.2 Executor内存配置3.1.3 Executor个数配置 3.2 Driver配置说明3.3 Spark配置实操 第4章 Hi…

【OMCI实践】ONT上线过程的omci消息(三)

引言 在上一篇文章【OMCI实践】ONT上线过程的omci消息&#xff08;二&#xff09;-CSDN博客中&#xff0c;主要介绍了ONT上线过程的OMCI交互的第一个阶段和第二个阶段omci消息&#xff0c;本篇介绍第二个阶段剩余的OMCI消息涉及到的受管实体&#xff08;ME&#xff09;的属性。…

保姆级教程Docker部署Zookeeper官方镜像

目录 1、安装Docker及可视化工具 2、创建挂载目录 3、运行Zookeeper容器 4、Compose运行Zookeeper容器 5、查看Zookeeper运行状态 6、验证Zookeeper是否正常运行 1、安装Docker及可视化工具 Docker及可视化工具的安装可参考&#xff1a;Ubuntu上安装 Docker及可视化管理…

【数据结构】栈与队列

栈 栈的概念及结构 栈:一种特殊的线性表&#xff0c;其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶&#xff0c;另一端称为栈底。栈中的数据元素遵守后进先出LIFO(Last In First Out)的原则。 压栈:栈的插入操作叫做进栈/压栈/入栈&…

安全实验作业

一 拓扑图 二 要求 1、R4为ISP&#xff0c;其上只能配置IP地址&#xff1b;R4与其他所有直连设备间均使用共有IP 2、R3-R5-R6-R7为MGRE环境&#xff0c;R3为中心站点&#xff1b; 3、整个OSPF环境IP基于172.16.0.0/16划分&#xff1b; 4、所有设备均可访问R4的环回&#x…

e2studio开发RA4M2(6)----GPIO外部中断(IRQ)配置

e2studio开发RA4M2.6--GPIO外部中断&#xff08;IRQ&#xff09;配置 概述视频教学样品申请硬件准备参考程序源码下载新建工程工程模板保存工程路径芯片配置工程模板选择时钟设置SWD调试口设置GPIO口配置按键中断配置中断回调函数主程序 概述 GPIO&#xff08;通用输入/输出&a…

排序算法--快速排序

快速排序是高效的排序算法&#xff0c;平均时间复杂度为 O(nlog⁡n)&#xff0c;适合大规模数据排序。 1.挖坑法 2左右指针法 3.前后指针法 // 交换两个元素的值 void swap(int* a, int* b) {int temp *a;*a *b;*b temp; }// 分区函数&#xff0c;返回分区点的索引 int par…