一、MDI简介

  • MDI就是多文档界面(Multi-document Interface,MDI)应用程序
  • MDI就是在主窗口里创建多个同类型的MDI子窗口,这些MDI子窗口在主窗口里显示,并共享主窗口上工具栏和菜单等操作功能,主窗口上的操作都针对当前活动的MDI子窗口进行

二、QMdiArea组件

  • 设计MDI应用程序需要在主窗口工作区放置一个QMdiArea作为MDI子窗体的容器
  • 所以我们需要事先创建窗体类对象,然后将窗口类通过addSubWindow函数添加到MDIArea组件中,然后再调用窗口类的show函数显示窗体

三、MDI的一些注意事项

  • 当在主窗口中关闭一个MDI子窗口时,这个MDI窗口对象都会删除。也可以使用setAttribute(Qt::WA_DeleteOnClose);函数显示设置在关闭MDI时删除窗口对象

四、QMDIArea组件的相关函数

addSubWindow函数

  • 此函数将一个窗口类添加到MDIArea中,然后调用窗口类的show函数显示在MDIArea中
QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())

activeSubWindow、widget函数

  • 该函数返回当前选中的活动的子窗口,返回的是QMdiSubWindow指针对象
  • 这样我们就可以通过activeSubWindow函数返回的QMdiSubWindow指针对象,间接通过widget函数得到该窗口的对象(但是需要强制类型转换)
QMdiSubWindow *QMdiArea::activeSubWindow() const
//头文件:#include <QMdiSubWindow>QWidget *QMdiSubWindow::widget() const

subWindowList函数

  • 此函数返回MDIArea组件中的窗口类列表
  • 因此我们可以通过该函数再调用count函数获取当前MDIArea中的窗体数量
QList<QMdiSubWindow *> QMdiArea::subWindowList(WindowOrder order = CreationOrder) const

loadFormFile函数

  • 当某个窗体添加到MDIArea中之后,就可以通过此函数加载一个文件的内容
  • 参数为QString对象,该对象是通过QFileDialog::getOpenFileName函数打开的

closeAllSubWindows函数

  • 通过此函数关闭MDIArea组件中的所有窗口
void QMdiArea::closeAllSubWindows()

tabsClosable()、setTabsClosable函数

  • tabsClosable:返回当前的MDIArea中的某个窗口是否可以关闭
  • setTabsClosable:设置当前的MDIArea中的某个窗口是否可以关闭
bool tabsClosable() constvoid setTabsClosable(bool closable)

viewMode、setViewMode函数

  • viewMode:返回当前MDIArea中某个窗口的显示模式
  • setViewMode:设置当前MDIArea中某个窗口的显示模式
ViewMode viewMode() constvoid setViewMode(ViewMode mode)
ViewMode 类型如下:QMdiArea::TabbedView     //Tab多页显示模式
QMdiArea::SubWindowView //子窗口模式

窗口默认显示为“子窗口模式”显示,Tab多页显示模式如下图所示:

cascadeSubWindows、tileSubWindows函数

  • cascadeSubWindows:窗口级联模式展开显示
  • tileSubWindows:窗口平铺模式展开显示
void QMdiArea::cascadeSubWindows()void QMdiArea::tileSubWindows()

textCut、setEditFont等函数

  • 当我们将窗口添加到MDIArea中之后,就可以调用这些函数来对窗口的字体进行格式化设置、剪切、复制

五、QMDIArea组件的信号函数

subWindowActivated信号函数

  • 当前活动窗口切换时触发此信号函数,利用此信号可以在活动窗口切换时进行一些处理
subWindowActivated(QMdiSubWindow *arg1)

六、演示案例

  • 见文章:https://blog.csdn.net/qq_41453285/article/details/98950286

Qt:34---MDI多文档界面相关推荐

  1. Qt:77---Demo(MDI多文档界面案例)

    本案例的基础知识来自于文章:https://blog.csdn.net/qq_41453285/article/details/98949333 一.文档类窗体的设计 这个窗体类是用来放在主窗体的MD ...

  2. Qt实现Word文档界面样式--QtitanRibbon

    QtitanRibbon - Microsoft Ribbon for Nokia's Qt概念的实现 QtitanRibbon组件实现了Microsoft Ribbon for Qt的概念,设计用于 ...

  3. Python Qt GUI设计:QMdiArea和QMdiSubWindow类实现多文档界面(拓展篇—3)

    一个典型的GUI应用程序可能有多个窗口,选项卡控件和堆栈窗口控件允许一次使用其中的一个窗口.然而,很多时候这种方法不是很有用,因为其他窗口的视图是隐藏的一种同时显示多个窗口的方法是,创建多个独立的窗口 ...

  4. MDI窗体(多文档界面)

    多文档界面(Multiple-Document Interface),简称MDI窗体.MDI窗体用于同时显示多个文档,每个文档显示在各自的窗口中.MDI窗体中通常有包含子菜单的窗口菜单,用于在窗口或文 ...

  5. wxWidgets:多文档界面实例

    wxWidgets:多文档界面实例 wxWidgets:多文档界面实例 mdi.h完整源代码 mdi.cpp完整源代码 wxWidgets:多文档界面实例 mdi.h完整源代码 #include &q ...

  6. 1-4 多文档界面处理(2)

    1-4-3 多文档界面的窗体传值技术 1.简介 一般在一个Windows开发项目系统之中,多文档窗口(MDI)只有一个,而其余的窗口为非MDI窗口,在设定窗口的父子关系时候,需要指定这些非MDI窗口的 ...

  7. Qt中文翻译(官方文档,界面,工具等)集锦

    Qt中文翻译(官方文档,界面,工具等)集锦 GitHub - jiangcaiyang/QtCreator-Translation-CN: This repository is trying to f ...

  8. Qt 版Word多文档编辑与处理(完整版)

    微软的Office Word软件是一款通用的文字处理软件, 其功能非常强大, 但它是如何实现的呢? 本文怀着这样的想法, 用Qt开发出与之功能类似的文字处理软件.(当然了, 我只实现了一些基本功能, ...

  9. 如何用Qt设计一个多文档文本编辑器

    目录 前言 一.设计目标 二.效果展示 三.设计过程 1.设计思路 1.1文件的打开和新建 1.2设置字体和字号 1.3设置字型和颜色 1.4设置文字对齐撤销等 2.核心代码 总结 前言 学习了有关Q ...

  10. Spring Boot整合swagger2(生成有左右菜单式的api文档界面)

    一.pom.xml内容: <!--=====依赖swagger2 zhongzk 2019.7.7 --> <dependency><groupId>io.spri ...

最新文章

  1. 指挥控制系统中的自然智能和人工智能
  2. Design Pattern Strategy C
  3. Java笔试——2021届秋招编程题汇总
  4. 一款三搭_冬日穿搭指南!照着这八条万能公式穿,让你不冻还有型_
  5. 详述MySQL事务及ACID特性的实现原理
  6. leetcode437. 路径总和 III
  7. bmklocationmanager方法没有回调_SystemVerilog中的callback(回调)
  8. GaiGai----1
  9. 用计算机弹奏体面6,抖音能用计算器按出音乐有哪些?计算器乐谱分享
  10. 求书:推荐阅读倡议书
  11. 人口各省预测模型matlab_利用matlab编程求解人口预测模型.doc
  12. itools苹果录屏大师_录屏可以有声音,发照片可以免流量,计算器输错可回删
  13. 数字麦克风PDM信号采集与STM32 I2S接口应用(三)
  14. 《Web全栈工程师的自我修养》读后感
  15. MATLAB 2018a安装教程(迅雷)
  16. 用canvas实现一个简易绘图工具
  17. nagios监控 mysql 表结构
  18. LocalDate 向后推几个月的日期如何计算
  19. lm80认证_什么是LM-80测试什么产品需要做LM-80测试
  20. C语言编译时产生的警告:initializing ‘char *‘ with an expression of type ‘const char *‘ discards qualifiers

热门文章

  1. 私活,永远解救不了自己屌丝的人生!
  2. wps指定路径不存在怎么办_系统找不到指定文件的主要原因是什么_怎么解决 - 驱动管家...
  3. 命名实体识别主要方法
  4. ORACLE 数据泵之NETWORK_LINK
  5. SpaceX星链技术取代不了5G,但会让打仗变成打游戏
  6. 计算机是uefi启动 不能装win7,UEFI模式安装Win7系统方法_Win7 Uefi下安装详细教程
  7. dell服务器uefi安装系统安装win7系统安装win7系统教程,强制给戴尔optiplex3050安装win7图文教程...
  8. 航摄比例尺、成图比例尺、地面分辨率与航摄设计用图比例尺
  9. 搭建商品详情页面工程、实现商品详情页面展示
  10. 【数据分析】京东订单数据分析思路及Python代码