- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
一、概述
二、使用场景
1. 多文档编辑器
2. 多窗口应用程序
3. 多视图应用程序
三、常见样式
1. 子窗口管理
2. 布局管理
四、属性设置
1. 添加子窗口
2. 移除子窗口
3. 设置活动子窗口
4. 获取活动子窗口
5. 获取所有子窗口
6. 平铺子窗口
7. 层叠子窗口
8. 子窗口激活信号
一、概述
QMdiArea
是 Qt 框架中用于实现多文档界面(MDI,Multiple Document Interface)的核心组件。它允许在一个主窗口中管理多个子窗口,每个子窗口可以独立显示和操作。QMdiArea
广泛应用于多文档编辑器、多窗口应用程序和多视图应用程序中,为用户提供高效的窗口管理功能。
二、使用场景
1. 多文档编辑器
在多文档编辑器中,用户通常需要同时打开和编辑多个文档。QMdiArea
可以管理多个子窗口,每个子窗口显示一个文档,用户可以通过切换子窗口快速访问不同的文档。例如,文本编辑器、代码编辑器等。
2. 多窗口应用程序
在多窗口应用程序中,用户需要在一个主窗口中同时操作多个子窗口。QMdiArea
提供了子窗口的添加、删除、排列等功能,方便用户管理多个窗口。例如,图形编辑软件、数据分析软件等。
3. 多视图应用程序
在多视图应用程序中,用户需要在一个主窗口中同时查看多个视图。QMdiArea
可以管理多个子窗口,每个子窗口显示一个视图,用户可以通过切换子窗口查看不同的数据或监控信息。例如,监控系统、数据可视化系统等。
三、常见样式
1. 子窗口管理
-
添加子窗口:使用
addSubWindow(QWidget *widget)
方法向QMdiArea
中添加一个新的子窗口。 -
删除子窗口:使用
removeSubWindow(QWidget *widget)
方法从QMdiArea
中移除一个子窗口。 -
激活子窗口:使用
setActiveSubWindow(QMdiSubWindow *window)
方法设置当前活动的子窗口。
2. 布局管理
-
平铺子窗口:使用
tileSubWindows()
方法将所有子窗口平铺排列。 -
层叠子窗口:使用
cascadeSubWindows()
方法将所有子窗口层叠排列。
四、属性设置
QMdiArea
提供了丰富的属性设置方法,开发者可以通过这些方法灵活地管理子窗口。
1. 添加子窗口
QMdiSubWindow *subWindow = new QMdiSubWindow;
QTextEdit *textEdit = new QTextEdit;
subWindow->setWidget(textEdit);
subWindow->setWindowTitle("SubWindow");
mdiArea->addSubWindow(subWindow);
subWindow->show();
2. 移除子窗口
mdiArea->removeSubWindow(subWindow);
3. 设置活动子窗口
mdiArea->setActiveSubWindow(subWindow);
4. 获取活动子窗口
QMdiSubWindow *activeWindow = mdiArea->activeSubWindow();
5. 获取所有子窗口
QList<QMdiSubWindow *> subWindows = mdiArea->subWindowList();
6. 平铺子窗口
mdiArea->tileSubWindows();
7. 层叠子窗口
mdiArea->cascadeSubWindows();
8. 子窗口激活信号
connect(mdiArea, &QMdiArea::subWindowActivated, this, &MyClass::onSubWindowActivated);