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)

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

案例: 用户消费数据分析--Pandas

1. 数据读入 2. 数据处理–日期处理 3. 用户整体消费趋势分析 4. 用户个体消费分析 4.1 用户消费数量与消费金额关系的散点图 4.2 每位用户消费金额分布 4.2.1 消费金额贡献度折线图 用户贡献度折线图 4.2.2 消费金额占比前80%的客户&#xff0c;消费分布直方图 4.3 消费时…

传输层协议

传输层协议 再谈端口号端口号范围划分认识知名端口号两个问题netstatpidof UDP协议UDP协议端格式UDP的特点面向数据报UDP的缓冲区UDP使用注意事项基于UDP的应用层协议 TCP协议TCP协议段格式确认应答(ACK)机制超时重传机制连接管理机制理解 CLOSE_WAIT 状态理解TIME_WAIT状态解决…

SQL | 分组数据

10-分组数据 两个新的select子句&#xff1a;group by子句和having子句。 10.1-数据分组 上面我们学到了&#xff0c;使用SQL中的聚集函数可以汇总数据&#xff0c;这样&#xff0c;我们就能够对行进行计数&#xff0c;计算和&#xff0c;计算平均数。 目前为止&#xff0c…

鸿蒙剥离 AOSP 不兼容 Android 热门问题汇总,不吹不黑不吵

上周发了一篇 《鸿蒙终于不套壳了&#xff1f;纯血 HarmonyOS NEXT 即将到来》的相关资讯&#xff0c;没想到大家「讨&#xff08;fa&#xff09;论&#xff08;xie&#xff09;」的热情很高&#xff0c;莫名蹭了一波流量&#xff0c;虽然流量对我来说也没什么用&#xff0c;但…

Golang 基础语法问答

使用值为 nil 的 slice、map 会发生什么&#xff1f; 允许对值为 nil 的 slice 添加元素&#xff0c;但是对值为 nil 的 map 添加元素时会造成运行时 panic。 // map错误示例 func main() {var m map[string]intm["one"] 1 // error: panic: assignment to entry …

bert,transformer架构图及面试题

Transformer详解 - mathor atten之后经过一个全连接层残差层归一化 class BertSelfOutput(nn.Module):def __init__(self, config):super().__init__()self.dense nn.Linear(config.hidden_size, config.hidden_size)self.LayerNorm nn.LayerNorm(config.hidden_size, epscon…

mysql between and 和 大于小于的区别

1&#xff09;表达式 between 下界值 and 上界值 ——限定"表达式"的值介于"下界值"到"上界值"之间的所有值&#xff0c;并且包含"下界值"和"上界值"&#xff1b; 2&#xff09;表达式 >下界值 and 表达式<上界值 ——…

REC 系列 Visual Grounding with Transformers 论文阅读笔记

REC 系列 Visual Grounding with Transformers 论文阅读笔记 一、Abstract二、引言三、相关工作3.1 视觉定位3.2 视觉 Transformer 四、方法4.1 基础的视觉和文本编码器4.2 定位编码器自注意力的文本分支文本引导自注意力的视觉分支 4.3 定位解码器定位 query 自注意力编码器-解…

【数学建模】-- 数学规划模型

概述&#xff1a; 什么是数学规划&#xff1f; 数学建模中的数学规划是指利用数学方法和技巧对问题进行数学建模&#xff0c;并通过数学规划模型求解最优解的过程。数学规划是一种数学优化方法&#xff0c;旨在找到使目标函数达到最大值或最小值的变量取值&#xff0c;同时满足…

Python中import模块导入的实现原理

欢迎关注博主 Mindtechnist 或加入【Linux C/C/Python社区】一起探讨和分享Linux C/C/Python/Shell编程、机器人技术、机器学习、机器视觉、嵌入式AI相关领域的知识和技术。 Python中import模块导入的实现原理 什么是模块import搜索路径import导入模块的原理图书推荐 专栏&…

client-go实战之十二:选主(leader-election)

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码)&#xff1a;https://github.com/zq2599/blog_demos 本篇概览 本文是《client-go实战》系列的第十二篇&#xff0c;又有一个精彩的知识点在本章呈现&#xff1a;选主(leader-election)在解释什么是选主之前&…

【数据结构OJ题】移除链表元素

原题链接&#xff1a;https://leetcode.cn/problems/remove-linked-list-elements/description/ 1. 题目描述 2. 思路分析 我们可以定义一个结构体指针变量cur&#xff0c;让cur一开始指向头结点&#xff0c;同时定义一个结构体指针prev&#xff0c;令prev初始化为空指针NULL…

2023年03月 C/C++(二级)真题解析#中国电子学会#全国青少年软件编程等级考试

第1题&#xff1a;数字字符求和 请编写一个程序实现以下功能&#xff1a;从一个字符串中&#xff0c;提取出所有的数字字符即0-9&#xff0c;并作为数求和。 时间限制&#xff1a;1000 内存限制&#xff1a;65536 输入 一行字符串&#xff0c;长度不超过100&#xff0c;字符串中…

图形推理 1

正确答案&#xff1a;D 你的答案&#xff1a;C 官方解析&#xff1a; 根据观察我们发现A、B、C项都为对称图形&#xff0c;只有D项不是。 官方解析&#xff1a; 图形组成元素不相似&#xff0c;先考虑属性规律&#xff0c;再考虑数量规律。属性无明显规律&#xff0c;考虑数量规…

智慧建筑工地平台,通过信息化技术、物联网、人工智能技术,实现对施工全过程的实时监控、数据分析、智能管理和优化调控

智慧工地是指通过信息化技术、物联网、人工智能技术等手段&#xff0c;对建筑工地进行数字化、智能化、网络化升级&#xff0c;实现对施工全过程的实时监控、数据分析、智能管理和优化调控。智慧工地的建设可以提高工地的安全性、效率性和质量&#xff0c;降低施工成本&#xf…

【LINUX相关】生成随机数(srand、/dev/random 和 /dev/urandom )

目录 一、问题背景二、修改方法2.1 修改种子2.2 使用linux中的 /dev/urandom 生成随机数 三、/dev/random 和 /dev/urandom 的原理3.1 参考连接3.2 重难点总结3.2.1 生成随机数的原理3.2.2 随机数生成器的结构3.2.3 二者的区别和选择 四、在代码的使用方法 一、问题背景 在一个…

【MT32F006】MT32F006之CS1237采集秤传感器

本文最后修改时间&#xff1a;2023年06月07日 一、本节简介 本文介绍如何使用MT32F006连接CS1237芯片采集秤传感器。 二、实验平台 库版本&#xff1a;V1.0.0 编译软件&#xff1a;MDK5.37 硬件平台&#xff1a;MT32F006开发板&#xff08;主芯片MT32F006&#xff09; 仿真…

微服务相关面试题

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是爱写博客的嗯哼&#xff0c;爱好Java的小菜坤 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;社区论坛&#xff1a;希望大家能加入社区共同进步…

python编程小游戏 五子棋,python编程小游戏简单的

大家好&#xff0c;本文将围绕python编程小游戏如何停止展开说明&#xff0c;python编程小游戏日语教程是一个很多人都想弄明白的事情&#xff0c;想搞清楚python编程小游戏超级玛丽需要先了解以下几个事情。 今天分享一个有趣的Python游戏库freegames&#xff0c;它里面包含经…

动漫3D虚拟人物制作为企业数字化转型提供强大动力

一个 3D 虚拟数字人角色的制作流程&#xff0c;可以分为概念设定-3D 建模-贴图-蒙皮-动画-引擎测试六个步骤&#xff0c;涉及到的岗位有原画师、模型师、动画师等。角色概念设定、贴图绘制一般是由视觉设计师来完成;而建模、装配(骨骼绑定)、渲染动画是由三维设计师来制作完成。…