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

ops/2025/2/6 0:44:53/
  • 公开视频 -> 链接点击跳转公开课程
  • 博客首页 -> ​​​链接点击跳转博客主页

目录

一、概述

二、使用场景

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.ppmy.cn/ops/156009.html

相关文章

ASP.NET Core Filter

目录 什么是Filter&#xff1f; Exception Filter 实现 注意 ActionFilter 注意 案例&#xff1a;自动启用事务的筛选器 事务的使用 TransactionScopeFilter的使用 什么是Filter&#xff1f; 切面编程机制&#xff0c;在ASP.NET Core特定的位置执行我们自定义的代码。…

Mac电脑上好用的免费截图软件

在Mac电脑上&#xff0c;有许多免费且功能强大的截图软件可供选择。以下是几款备受推荐的免费截图工具&#xff1a; iShot 功能&#xff1a;iShot是一款免费的截图工具&#xff0c;支持多种截图方式&#xff0c;包括长截图、延时截图、滚动截图、窗口截图、区域截图等。此外&am…

Python爬虫:1药城店铺爬虫(完整代码)

⭐️⭐️⭐️⭐️⭐️欢迎来到我的博客⭐️⭐️⭐️⭐️⭐️ &#x1f434;作者&#xff1a;秋无之地 &#x1f434;简介&#xff1a;CSDN爬虫、后端、大数据领域创作者。目前从事python爬虫、后端和大数据等相关工作&#xff0c;主要擅长领域有&#xff1a;爬虫、后端、大数据…

5. 【Vue实战--孢子记账--Web 版开发】-- 主页UI

我们在实现个人中心的时候简单的搭建了一个主页UI&#xff0c;但是这个主页并不是我们需要的&#xff0c;在这一节我们将一起实现主页UI的搭建。 一、功能 主页UI的原型如下: 首页UI原型包括左侧菜单和顶部header&#xff0c;左侧菜单包含多个功能模块的链接&#xff1a;首页…

框架与代码的形状

​ 作为一个代码的设计者&#xff0c;我之前讨论过代码的形状&#xff0c;从“名字”出发&#xff0c;进行讨论。代码的形状&#xff1a;重构的方向-CSDN博客 从比喻的角度来看&#xff0c;名字似代码的血和肉&#xff0c;而框架则似代码的骨架。 猎豹和大象 在大自然中&…

自定义数据集 ,使用朴素贝叶斯对其进行分类

数据集定义&#xff1a; - data 列表包含了文本样本及其对应的情感标签。每个元素是一个元组&#xff0c;第一个元素是文本&#xff0c;第二个元素是标签。 特征提取&#xff1a; - 使用 CountVectorizer 将文本转换为词频向量。 fit_transform 方法在训练数据上拟合向量器…

Van-Nav:新年,将自己学习的项目地址统一整理搭建自己的私人导航站,供自己后续查阅使用,做技术的同学应该都有一个自己网站的梦想

嗨&#xff0c;大家好&#xff0c;我是小华同学&#xff0c;关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 Van-Nav是一个基于Vue.js开发的导航组件库&#xff0c;它提供了多种预设的样式和灵活的配置选项&#xff0c;使得开发者可以轻松地定制出符合项目需求…

html中的表格属性以及合并操作

表格用table定义&#xff0c;标签标题用caption标签定义&#xff1b;用tr定义表格的若干行&#xff1b;用td定义若干个单元格&#xff1b;&#xff08;当单元格是表头时&#xff0c;用th标签定义&#xff09;&#xff08;th标签会略粗于td标签&#xff09; table的整体外观取决…