一、MDI概述
MDI就是多文档,与之相对的是单文档SDI,MDI源自微软的Excel表格。
多文档实现的类有两种QWorkSpace和QMdiArea,这两个类可以实现多文档显示窗口
QMdiArea的实质就是为MDI窗口提供一个窗口管理器,通常它可以作为QMainWindow的中心部件,但是也可以适合任何布局
二、MDI实现
利用QMdiArea来实现多文档界面
1、创造一个QMdiArea实例
QMdiArea *mdi = new QMdiArea();
2、添加子窗口
mdi->addSubWindow(QWidget*);
3、设置布局方式
mdi->cascadeSubWindow();
mdi->tileSubWindows();
4、加载QMdiArea实例
setCentralWidget(mdi);
当窗口获得键盘焦点时就会被激活,也可以使用setFocus()激活。当某个窗口被激活的时候,会发出信号
subWindowActivated(QMdiSubWindow *)
三、MDI实例
MDI就是多文档,与之相对的是单文档SDI,MDI源自微软的Excel表格。
多文档实现的类有两种QWorkSpace和QMdiArea,这两个类可以实现多文档显示窗口
QMdiArea的实质就是为MDI窗口提供一个窗口管理器,通常它可以作为QMainWindow的中心部件,但是也可以适合任何布局
二、MDI实现
利用QMdiArea来实现多文档界面
1、创造一个QMdiArea实例
QMdiArea *mdi = new QMdiArea();
2、添加子窗口
mdi->addSubWindow(QWidget*);
3、设置布局方式
mdi->cascadeSubWindow();
mdi->tileSubWindows();
4、加载QMdiArea实例
setCentralWidget(mdi);
当窗口获得键盘焦点时就会被激活,也可以使用setFocus()激活。当某个窗口被激活的时候,会发出信号
subWindowActivated(QMdiSubWindow *)
三、MDI实例
点击(此处)折叠或打开
- #include "mdi.h"
-
- MdiWindow::MdiWindow()
- {
- mdi = new QMdiArea();
- text1 = new QTextEdit();
- text2 = new QTextEdit();
- mdi->addSubWindow(text1);
- mdi->addSubWindow(text2);
- mdi->cascadeSubWindows();
-
- setCentralWidget(mdi);
- connect(mdi, SIGNAL(subWindowActivated(QMdiSubWindow *)), this, SLOT(mdiSlot(QMdiSubWindow *)));
- }
-
- void MdiWindow::mdiSlot(QMdiSubWindow *window)
- {
- if(window!=0)
- {
- text1->clear();
- text2->clear();
-
- QTextEdit *temp = (QTextEdit*)(window->widget());
- temp->setText(tr("我获取列焦点"));
- }
- }