当前位置: 首页 > article >正文

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.kler.cn/a/533313.html

相关文章:

  • 【缴纳过路费——并查集】
  • ubuntu 网络管理--wpa_supplicant、udhcpc
  • unity学习26:用Input接口去监测: 鼠标,键盘,虚拟轴,虚拟按键
  • python算法和数据结构刷题[3]:哈希表、滑动窗口、双指针、回溯算法、贪心算法
  • e2studio开发RA4M2(6)----GPIO外部中断(IRQ)配置
  • MATLAB中textBoundary函数用法
  • 优选算法《前缀和》
  • PG vs MySQL 统计信息收集的异同
  • Python 操作列表(元组)
  • C++ Primer 表达式基础
  • 用 Node.js 实现一个上传图片接口
  • modbus协议处理
  • 深度整理总结MySQL——Join的工作原理
  • 机器学习常用包numpy篇(四)函数运算
  • [创业之路-281]:在其位谋其职,企业不同角色,关心不同的问题。企业高层的书单、企业中层的书单、一线员工的书单
  • YK人工智能(六)——万字长文学会基于Torch模型网络可视化
  • Node.js:其实后端没那么难?
  • Spring AI 智能体通过 MCP 集成本地文件数据
  • 陷入闭包:理解 React 状态管理中的怪癖
  • JAVA:Spring Boot 集成 Disruptor 的技术指南
  • 深入理解指针(5)
  • 双系统共用一个蓝牙鼠标
  • 【Leetcode 每日一题 - 补卡】922. 按奇偶排序数组 II
  • OSCP - Other Machines - Blogger
  • 【华为OD机试python】日志采集系统【 E卷 | 2023 Q1 |100分】
  • RabbitMQ中的@Header