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

news/2024/10/19 19:43:44/

 一、前言

        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.ppmy.cn/news/1038790.html

相关文章

uniapp tabbar 浏览器调试显示 真机不显示

解决方案&#xff0c;把tabBar里面的单位全改为px&#xff0c;rpx是不会显示的&#xff01; 注意了&#xff0c;改完一定要重新运行&#xff0c;不然无效&#xff0c;坑爹 "tabBar": {"borderStyle": "black","selectedColor": &quo…

数据库(三)

创建一个student表格&#xff1a; create table student( id int(10) not null unique primary key, name varchar(20) not null, sex varchar(4), birth year, department varchar(20), address varchar(50) ); 创建一个score表格 create table score( id int(10) n…

学习笔记整理-面向对象-04-上升到面向对象

一、上升到面向对象 面向对象的本质&#xff1a;定义不同的类&#xff0c;让类的实例工作。面向对象的优点&#xff1a;程序编写更清晰&#xff0c;代码结构更严密&#xff0c;使代码更健壮更利于维护。面向对象经常用到的场合&#xff1a;需要封装和复用性场合(组件思维)。 …

qrcode.react生成二维码

qrcode.react 是一个**用于生成二维码&#xff08;QR 码&#xff09;的 React 组件库。**它提供了一个 React 组件&#xff0c;可以轻松地在 React 应用程序中生成和显示 QR 码。 使用 qrcode.react&#xff0c;可以以声明式的方式在 React 组件中定义 QR 码的内容、尺寸、颜色…

如何增强企业合同管理数字化能力

随着科技的发展和信息化时代的来临&#xff0c;企业在合同管理方面面临着日益复杂的挑战。传统的合同管理方式已经无法满足企业对合同管理效率和准确性的需求。因此&#xff0c;增强企业合同管理的数字化能力成为迫切的任务。 下面是一些关键步骤&#xff0c;可以帮助企业有效…

ClickHouse AST is too big 报错问题处理记录

ClickHouse AST is too big 报错问题处理记录 问题描述问题分析解决方案1、修改系统配置2、修改业务逻辑 问题描述 项目中统计报表的查询出现 AST is too big 问题&#xff0c;报错信息如下&#xff1a; 问题分析 报错信息显示 AST is too big。 AST 表示查询语法树中的最大…

变形回文串

Q: Str是一个长度小于等于8的由大小写字母和数字字符组成的字符串。判断由Str中逐个字符ASCII值的10进制数字连接组成的字符串是否是回文串。例如&#xff1a;“8MA”中三个字符的ASCII值分别为56、77、65&#xff0c;那么连接成的字符串为“567765”&#xff0c;显然是一个回文…

工作流引擎之Flowable教程(整合SpringBoot)

简介 Flowable是什么&#xff0c;下面是官方文档介绍&#xff1a; Flowable是一个使用Java编写的轻量级业务流程引擎。Flowable流程引擎可用于部署BPMN 2.0流程定义&#xff08;用于定义流程的行业XML标准&#xff09;&#xff0c; 创建这些流程定义的流程实例&#xff0c;进行…