Qt应用开发(基础篇)——MDI窗口 QMdiArea QMdiSubWindow

 一、前言

        QMdiArea类继承于QAbstractScrollArea,QAbstractScrollArea继承于QFrame,是Qt用来显示MDI窗口的部件。

       滚屏区域基类 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486

       框架类 QFramehttps://blog.csdn.net/u014491932/article/details/132188655

         QMdiArea部件提供了一个显示MDI(Multiple Document Interface)多文档窗口。子窗口使用QMdiSubWindow管理,QMdiSubWindow继承于QWidget,所以它除了拥有顶级窗口的属性,还拥有自身的行为,比如按键移动窗口等。

二、QMdiArea类

1、activationOrder

      该属性保存子窗口列表的排序标准。默认情况下,它是窗口创建顺序。使用subWindowList()返回的子窗口列表的排序。

QMdiArea::WindowOrder activationOrder() const
void setActivationOrder(QMdiArea::WindowOrder order)
定义描述
QMdiArea::CreationOrder窗口按照创建的顺序返回。
QMdiArea::StackingOrder窗口按照它们的堆叠顺序返回,最上面的窗口是列表中的最后一个
QMdiArea::ActivationHistoryOrder窗口按照它们被激活的顺序返回

2、background

        该属性保存工作区的背景刷子,默认情况下,它是灰色,但可以是任何刷子(例如,颜色,渐变或像素图)。

QBrush background() const
void setBackground(const QBrush &background)

3、viewMode

        该属性表示二级界面的显示方式,默认为QMdiArea::SubWindowView。

QMdiArea::ViewMode viewMode() const
void setViewMode(QMdiArea::ViewMode mode)
定义描述
QMdiArea::SubWindowView显示带有窗口框架的子窗口
QMdiArea::TabbedView带有选项卡的窗口

 

        选项卡窗口QTabWidgeticon-default.png?t=N6B9https://blog.csdn.net/u014491932/article/details/132311737

4、documentMode

        该属性用于在选项卡视图模式下选项卡栏是否设置为文档模式,默认禁用。这与macOS上的文档模式相同。启用时,不会呈现选项卡部件框架,即选项卡页面和其后的窗口等页面无框架区分看起来是一个整体。此模式对于页面需要显示文档类型的情况非常有用,因为节省了选项卡部件框架占用的部分空间。

bool documentMode() const
void setDocumentMode(bool enabled)

5、tabPosition

        该属性表示选项卡视图模式中选项卡的位置。

QTabWidget::TabPosition tabPosition() const
void setTabPosition(QTabWidget::TabPosition position)

6、tabShape

        该属性表示选项卡视图模式中选项卡的形状。

QTabWidget::TabShape tabShape() const
void setTabShape(QTabWidget::TabShape shape)

7、tabsClosable

        该属性表示选项卡视图模式中选项卡栏是否应该在每个选项卡上放置关闭按钮。

bool tabsClosable() const
void setTabsClosable(bool closable)

8、tabsMovable

        该属性表示选项卡视图模式中用户是否可以移动选项卡区域内的选项卡,默认选项卡是不可移动的。

bool tabsMovable() const
void setTabsMovable(bool movable)

9、公共方法

1)addSubWindow

        使用addSubWindow添加小部件到MDI区域,如果希望在MDI区域关闭窗口时删除窗口,则必须设置Qt::WA_DeleteOnClose小部件属性,否则隐藏。

QMdiSubWindow *addSubWindow(QWidget *widget, Qt::WindowFlags windowFlags = Qt::WindowFlags())

        示例:

QMdiArea mdiArea;
QMdiSubWindow *subWindow1 = new QMdiSubWindow;
subWindow1->setWidget(internalWidget1);
subWindow1->setAttribute(Qt::WA_DeleteOnClose);
mdiArea.addSubWindow(subWindow1);

2)activeSubWindow

        返回当前活动的子窗口,没有则返回nullptr。

QMdiSubWindow *activeSubWindow() const

3)currentSubWindow

        返回指向当前子窗口的指针,如果没有则返回nullptr。如果包含QMdiArea的QApplication是活动的,这个函数将返回与activeSubWindow()相同的结果。

QMdiSubWindow *currentSubWindow() const

4)removeSubWindow

        移除MdiSubWindows或者内部小部件。

void removeSubWindow(QWidget *widget)

5)setOption/testOption

        设置返回一些MDI行为的使能。

bool testOption(QMdiArea::AreaOption option) const
void setOption(QMdiArea::AreaOption option, bool on = true)
定义描述
QMdiArea::DontMaximizeSubWindowOnActivation当活动子窗口最大化时,默认行为是最大化下一个激活的子窗口

6)subWindowList

        返回MDI区域中所有子窗口的列表,activationOrder属性决定返回的顺序。

QList<QMdiSubWindow *> subWindowList(QMdiArea::WindowOrder order = CreationOrder) const

10、信号

1)subWindowActivated

        窗口被激活后时触发。

void subWindowActivated(QMdiSubWindow *window)

三、QMdiSubWindow类

1、keyboardPageStep

        设置使用键盘页面键时小部件应该移动距离。默认的键盘页步长值是20像素。        

int keyboardPageStep() const
void setKeyboardPageStep(int step)

2、keyboardSingleStep

        设置使用键盘箭头键时小部件应该移动距离。默认的键盘单步值是5像素。

int keyboardSingleStep() const
void setKeyboardSingleStep(int step)

3、公共方法

1)isShaded

       获取窗口是否为阴影,如果窗口被折叠,只有标题栏可见,则显示为阴影。

bool isShaded() const

2)showShaded

       调用此函数使子窗口进入阴影模式。

void showShaded()

3)mdiArea

        返回持有mdiSbuWindow的mdiArea指针。

QMdiArea *mdiArea() const

4)setOption

        设置子窗口行为的使能。        

void setOption(QMdiSubWindow::SubWindowOption option, bool on = true)

5)testOption

        返回子窗口行为的使能。   

bool testOption(QMdiSubWindow::SubWindowOption option) const
定义
QMdiSubWindow::RubberBandResize启用后,用户可调整子窗口大小,QResizeEvent事件触发,默认该选项是禁用的。
QMdiSubWindow::RubberBandMove启用后,用户可移动子窗口位置,QMoveEvent事件触发,默认该选项是禁用的。

6)systemMenu

        获取子窗口的当前系统菜单。

QMenu *systemMenu() const

7)setSystemMenu

        设置子窗口的当前系统菜单。

void setSystemMenu(QMenu *systemMenu)

8)showSystemMenu

        显示子窗口的当前系统菜单。

void showSystemMenu()

9)setWidget

       获取子窗口的内部小部件。

QWidget *widget() const

10)setWidget

       设置子窗口的内部小部件。内部小部件显示在标题栏下方的子窗口中央。

void setWidget(QWidget *widget)

4、信号

1)aboutToActivate

        子窗口被激活发出此信号,QMdiArea也将发出subWindowActivated()信号。

void aboutToActivate()

2)windowStateChanged

        QMdiSubWindow在窗口状态改变后发出这个信号。

void windowStateChanged(Qt::WindowStates oldState, Qt::WindowStates newState)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Alibaba中间件技术系列】「RocketMQ技术专题」让我们一起探索一下DefaultMQPushConsumer的实现原理及源码分析

RocketMQ开源是使用文件作为持久化工具&#xff0c;阿里内部未开源的性能会更高&#xff0c;使用oceanBase作为持久化工具。 在RocketMQ1.x和2.x使用zookeeper管理集群&#xff0c;3.x开始使用nameserver代替zk&#xff0c;更轻量级&#xff0c;此外RocketMQ的客户端拥有两种的…

公网远程连接Redis数据库「内网穿透」

文章目录 1. Linux(centos8)安装redis数据库2. 配置redis数据库3. 内网穿透3.1 安装cpolar内网穿透3.2 创建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一个固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址连接 前言 洁洁的个人主页 我就问你有没有发挥&#xff0…

GuLi商城-前端基础Vue-生命周期和钩子函数

下图展示了实例的生命周期。你不需要立马弄明白所有的东西&#xff0c;不过随着你的不断学习和使用&#xff0c;它 的参考价值会越来越高。 VUE 的生命周期指的是组件在创建、运行和销毁过程中所经历的一系列事件&#xff0c;通过这些事件可以 让开发者在不同阶段进行相应的…

【C语言】指针的进阶

目录 一、字符指针 二、指针数组 三、数组指针 1.数组指针的定义 2.&数组名和数组名区别 3.数组指针的使用 四、数组参数与指针参数 1.一维数组传参 2.二维数组传参 3.一级指针传参 4.二级指针传参 五、函数指针 六、函数指针数组 七、指向函数指针数组的指针…

【使用教程】在Ubuntu下运行CANopen通信PMM伺服电机使用教程(NimServoSDK_V2.0.0)

本教程将指导您在Ubuntu操作系统下使用NimServoSDK_V2.0.0来运行CANopen通信的PMM系列一体化伺服电机。我们将介绍必要的步骤和命令&#xff0c;以确保您能够成功地配置和控制PMM系列一体化伺服电机。 NimServoSDK_V2.0.0是一款用于PMM一体化伺服电机的软件开发工具包。它提供了…

金融语言模型:FinGPT

项目简介 FinGPT是一个开源的金融语言模型&#xff08;LLMs&#xff09;&#xff0c;由FinNLP项目提供。这个项目让对金融领域的自然语言处理&#xff08;NLP&#xff09;感兴趣的人们有了一个可以自由尝试的平台&#xff0c;并提供了一个与专有模型相比更容易获取的金融数据。…

Git 设置代理

Git 传输分两种协议&#xff0c;SSH和 http(s)&#xff0c;设置代理也需要分两种。 http(s) 代理 Command Line 使用 命令行 模式&#xff0c;可以在Powershell中使用以下命令设置代理&#xff1a; $env:http_proxy"http://127.0.0.1:7890" $env:https_proxy&quo…

算法通关村第十关 | 归并排序

1. 归并排序原理 归并排序&#xff08;MERARE-SORT&#xff09;简单来说就是将大的序列先视为若干个比较小的数组&#xff0c;分成比较小的结构&#xff0c;然后是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的分治策略&#xff08;分就是将问题分成一些小的问题分…

数学建模之“聚类分析”原理详解

一、聚类分析的概念 1、聚类分析&#xff08;又称群分析&#xff09;是研究样品&#xff08;或指标&#xff09;分类问题的一种多元统计法。 2、主要方法&#xff1a;系统聚类法、有序样品聚类法、动态聚类法、模糊聚类法、图论聚类法、聚类预报法等。这里主要介绍系统聚类法…

【uniapp】picker mode=“region“ 最简单的省市区 三级联动

省市区 picker template <picker mode"region" :value"date" class"u-w-440" change"bindTimeChange"><u--inputborder"bottom"class"u-fb u-f-s-28"placeholder"请选择省市区"type"te…

vue实例挂载过程

以下仅为个人见解。 1.大致流程&#xff1a; new Vue()时会调用initMixin(Vue)将_init挂载到vue原型上&#xff1b;在_init()中调用$mount()方法($mount()方法也是挂载到vue原型上的)编译template模版&#xff0c;并生成render()函数&#xff1b;挂载到vm上后&#xff0c;会…

前端node.js入门-前端工程化与模块化

(创作不易&#xff0c;感谢有你&#xff0c;你的支持&#xff0c;就是我前行的最大动力&#xff0c;如果看完对你有帮助&#xff0c;请留下您的足迹&#xff09; 目录 Node.js 入门 什么是 Node.js&#xff1f; 什么是前端工程化&#xff1f; Node.js 为何能执行 JS&…

神经网络基础-神经网络补充概念-08-逻辑回归中的梯度下降算法

概念 逻辑回归是一种用于分类问题的机器学习算法&#xff0c;而梯度下降是优化算法&#xff0c;用于更新模型参数以最小化损失函数。在逻辑回归中&#xff0c;我们使用梯度下降算法来找到最优的模型参数&#xff0c;使得逻辑回归模型能够更好地拟合训练数据。 逻辑回归中的梯…

C语言——通讯录详解(动态版)

通讯录详解 前言&#xff1a;一、定义一个通讯录二、初始化三、增加联系人3.1 给通讯录扩容3.2增加联系人 四、释放内存五、完整代码 前言&#xff1a; 我们已经学过了通讯录的静态版&#xff0c;但是它的缺点很明显&#xff0c;通讯录满了就添加不了联系人了啦。我再让通讯录升…

山东布谷科技直播软件源码Nginx服务器横向扩展:搭建更稳定的平台服务

在直播软件源码平台中&#xff0c;服务器扮演着重要的角色&#xff0c;关系着视频传输、数据处理、用户管理等工作的顺利完成。随着互联网的迅猛发展&#xff0c;直播行业也随之崛起&#xff0c;全世界的人们都加入到了直播软件源码平台中&#xff0c;用户流量的增加让服务器的…

Mac鼠标增强工具Smooze Pro

Smooze Pro是一款Mac上的鼠标手势增强工具&#xff0c;可以让用户使用鼠标手势来控制应用程序和系统功能。 它支持多种手势操作&#xff0c;包括单指、双指、三指和四指手势&#xff0c;并且可以自定义每种手势的功能。例如&#xff0c;您可以使用单指向下滑动手势来启动Expos视…

web JS高德地图标点、点聚合、自定义图标、自定义窗体信息、换肤等功能实现和高复用性组件封装教程

文章目录 前言一、点聚合是什么&#xff1f;二、开发前准备三、API示例1.引入高德地图2.创建地图实例3.添加标点4.删除标点5.删除所有标点&#xff08;覆盖物&#xff09;6.聚合点7.自定义聚合点样式8.清除聚合9.打开窗体信息 四、实战开发需求要求效果图如下&#xff1a;封装思…

pdf怎么合并在一起?这几个合并方法了解一下

pdf怎么合并在一起&#xff1f;在日常工作、学习和生活中&#xff0c;我们常常会遇到需要将多个PDF文件合并成一个文件的情况。比如&#xff0c;在学术论文写作中&#xff0c;我们可能需要将多篇论文合并成一个文件进行打印和提交。在工作中&#xff0c;我们可能需要将多个报告…

记录每日LeetCode 617.合并二叉树 Java实现

题目描述&#xff1a; 给你两棵二叉树&#xff1a; root1 和 root2 。 想象一下&#xff0c;当你将其中一棵覆盖到另一棵之上时&#xff0c;两棵树上的一些节点将会重叠&#xff08;而另一些不会&#xff09;。你需要将这两棵树合并成一棵新二叉树。合并的规则是&#xff1a;…

如何从cpu改为gpu,pytorch,cuda

1.cmd输入nvcc -V 2.得到 cuda版本后&#xff0c;去pytorch官网 3.根据自己的cuda进行选择 4.复制上述链接&#xff0c;进入cmd 5.cmd中输入activate XXX,这里的"XXX"指代自己在工程中用到的环境 6.进入后&#xff0c;将刚才链接粘贴&#xff0c;回车等待下载结束 …