IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> Qt Widgets C++ --- Main Window and Related Classes --- QMdiArea -> 正文阅读

[C++知识库]Qt Widgets C++ --- Main Window and Related Classes --- QMdiArea

Qt Widgets C++ — Main Window and Related Classes — QMdiArea

QMdiArea视图模式介绍

QMdiArea的功能本质上类似于MDI窗口的窗口管理器。例如,它绘制自己管理的窗口,并以层叠或平铺模式排列它们。QMdiArea通常用作QMainWindow中的中心小部件来创建MDI应用程序,但也可以放置在任何布局中。


想要了解QMdiArea的使用,首先我们的了解他的两种视图模式,即:子窗体模式和标签模式,两者的显示样式风别如下:

  • 子窗体模式
    在这里插入图片描述
  • 标签模式
    在这里插入图片描述

在QMdiArea中,

  • 通过如下枚举定义视图模式:
    enum QMdiArea::ViewMode
    QMdiArea::SubWindowView 0 子窗体模式(默认模式)
    QMdiArea::TabbedView 1 标签模式,标签选项卡模式

  • 通过如下函数获取和修改视图模式
    QMdiArea::ViewMode viewMode() const 获取当前视图模式
    void setViewMode(QMdiArea::ViewMode mode) 设置修改视图模式

// 修改视图模式试列代码
QMdiArea::ViewMode viewmode = qMdiArea->viewMode();
	switch (viewmode)
	{
	case QMdiArea::SubWindowView:
	{
		qMdiArea->setViewMode(QMdiArea::TabbedView);
	}
	break;
	case QMdiArea::TabbedView:
	{
		qMdiArea->setViewMode(QMdiArea::SubWindowView);
	}
	break;
	default:
		break;
	}

QMdiArea标签(选项卡)模式下相关成员属性介绍

接下来我们来介绍一下QMdiArea类中的一些只有在标签(选项卡)模式下才起作用的一些成员属性
注意:接下来这些成员属性只有在标签(选项卡)模式下才起作用

  • tabsClosable : bool
    此属性用于确定选项卡栏是否应在选项卡式视图模式下的每个选项卡上放置关闭按钮。默认情况下,选项卡不可关闭。
    访问功能函数如下:
    bool tabsClosable() const 获取tabsClosable 当前值
    void setTabsClosable(bool closable) 设置修改tabsClosable 当前值
  • tabsMovable : bool
    此属性用于确定用户是否可以在选项卡式视图模式下在选项卡栏区域内移动选项卡。默认情况下,选项卡不可移动。
    访问功能函数如下:
    bool tabsMovable() const 获取tabsMovable 当前值
    void setTabsMovable(bool movable) 设置修改tabsMovable 当前值
  • documentMode : bool
    此属性用于保存选项卡栏在选项卡式视图模式下是否设置为文档模式。默认情况下禁用文档模式。
    访问功能函数如下:
    bool documentMode() const 获取documentMode 当前值
    void setDocumentMode(bool enabled) 设置修改documentMode 当前值
  • tabPosition : QTabWidget::TabPosition
    此属性在选项卡式视图模式下保留选项卡的位置。此属性的可能值由QTabWidget::TabPosition枚举描述。
    访问功能函数如下:
    QTabWidget::TabPosition tabPosition() const
    void setTabPosition(QTabWidget::TabPosition position)
  • tabShape : QTabWidget::TabShape
    此属性在选项卡式视图模式下保留选项卡的形状。
    此属性的可能值为QTabWidget::Rounded(默认)或QTabWidget::Triangal。
    访问功能函数如下:
    QTabWidget::TabShape tabShape() const
    void setTabShape(QTabWidget::TabShape shape)

QMdiArea常用成员函数介绍

  • QMdiSubWindow *QMdiArea::currentSubWindow() const
    返回指向当前子窗口的指针,如果没有当前子窗口,则返回nullptr。
    如果包含QMdiArea的QApplication处于活动状态,则此函数将返回与activeSubWindow()相同的结果。
  • QMdiSubWindow *QMdiArea::activeSubWindow() const
    返回指向当前活动子窗口的指针。如果当前没有活动的窗口,则返回nullptr。就窗口状态而言,子窗口被视为顶级窗口,即,如果MDI区域外的小部件是活动窗口,则没有子窗口处于活动状态。请注意,如果MDI区域所在窗口中的小部件获得焦点,该窗口将被激活。
  • QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())
    将小部件作为新的子窗口添加到MDI区域。如果windowFlags为非零,则它们将覆盖小部件上设置的标志。小部件可以是QMdiSubWindow 或其他QWidget(在这种情况下,MDI区域将创建一个子窗口并将小部件设置为内部小部件)。注意:添加子窗口后,其父窗口将是QMdiArea的视口小部件。创建自己的子窗口时,如果希望在MDI区域中关闭窗口时删除该窗口,则必须设置Qt::WA_DeleteOnClose 小部件属性。否则,窗口将被隐藏,MDI区域将不会激活下一个子窗口。返回添加到MDI区域的QMdiSubWindow。
  • void QMdiArea::removeSubWindow(QWidget *widget)
    从MDI区域删除小部件。小部件必须是QMdiSubWindow 或子窗口的内部小部件。注意QMdiArea从未实际删除小部件。如果传入了QMdiSubWindow ,则其父级设置为nullptr,并将其删除;但是,如果传入了内部小部件,则子小部件将设置为nullptr,并且不会删除
  • QMdiSubWindowQList<QMdiSubWindow *> QMdiArea::subWindowList(QMdiArea::WindowOrder order = CreationOrder) const
    返回MDI区域中所有子窗口的列表。如果order是CreationOrder(默认设置),则窗口将按照其插入工作区的顺序进行排序。如果顺序为StackingOrder,则窗口将按其堆叠顺序列出,最上面的窗口是列表中的最后一项。如果顺序为ActivationHistoryOrder,则将根据其最近的激活历史记录列出窗口
  • void QMdiArea::setActiveSubWindow(QMdiSubWindow *window)
    激活子窗口窗口。如果窗口为nullptr,则会停用任何当前活动窗口。
  • void QMdiArea::closeActiveSubWindow()
    关闭所有激活的子窗体
  • void QMdiArea::closeAllSubWindows()
    通过向每个窗口发送QCloseEvent来关闭所有子窗口。在关闭子窗口之前,您可能会收到来自子窗口的subWindowActivated()信号(如果MDI区域在另一个窗口关闭时激活子窗口)。忽略关闭事件的子窗口将保持打开状态。
  • void QMdiArea::activateNextSubWindow()
    将键盘焦点提供给子窗口列表中的另一个窗口。激活的窗口将是当前激活顺序确定的下一个窗口。
  • void QMdiArea::activatePreviousSubWindow()
    将键盘焦点提供给子窗口列表中的另一个窗口。激活的窗口将是由当前激活顺序确定的前一个窗口。
//示例代码
// QMdiSubWindow *QMdiArea::addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())
RLQGraphicsView * pRLQGraphicsView = new RLQGraphicsView();
pRLQGraphicsView->setWindowTitle("TTT");
qMdiArea->addSubWindow(pRLQGraphicsView);
// qMdiArea->addSubWindow(pRLQGraphicsView, Qt::WindowSystemMenuHint);
// qMdiArea->addSubWindow(pwidget, Qt::CustomizeWindowHint);
// qMdiArea->addSubWindow(pRLQGraphicsView, Qt::WindowSystemMenuHint | Qt::CustomizeWindowHint);
pRLQGraphicsView->show();

// QMdiSubWindowQList<QMdiSubWindow *> QMdiArea::subWindowList(QMdiArea::WindowOrder order = CreationOrder) const
QList<QMdiSubWindow *> sublist = qMdiArea->subWindowList();
for (QList<QMdiSubWindow *>::iterator iter = sublist.begin(); iter != sublist.end(); iter++)
{
	QMdiSubWindow * p = *iter;
	p->show();
}

QMdiArea信号

  • void QMdiArea::subWindowActivated(QMdiSubWindow *window)
    QMdiArea在激活窗口后发出此信号。当窗口为nullptr时,QMdiArea刚刚停用了其最后一个活动窗口,并且工作区上没有活动窗口。
// 示例代码
connect(qMdiArea, &QMdiArea::subWindowActivated, this,&RLQMdiArea::RLsubWindowActivated);
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:32:27  更:2022-07-03 10:34:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年4日历 -2024/4/28 13:24:57-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码