一、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("我获取列焦点"));
-
}
-
}
阅读(3475) | 评论(0) | 转发(0) |