lesson11-MDI多文档

简介: 一、MDI概述 MDI就是多文档,与之相对的是单文档SDI,MDI源自微软的Excel表格。 多文档实现的类有两种QWorkSpace和QMdiArea,这两个类可以实现多文档显示窗口 QMdiArea的实质就是为MDI窗口提供一个窗口管理器,通常它可以作为QMainWindo...
一、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实例

点击(此处)折叠或打开

  1. #include "mdi.h"

  2. MdiWindow::MdiWindow()
  3. {
  4.     mdi = new QMdiArea();
  5.     text1 = new QTextEdit();
  6.     text2 = new QTextEdit();
  7.     mdi->addSubWindow(text1);
  8.     mdi->addSubWindow(text2);
  9.     mdi->cascadeSubWindows();

  10.     setCentralWidget(mdi);
  11.     connect(mdi, SIGNAL(subWindowActivated(QMdiSubWindow *)), this, SLOT(mdiSlot(QMdiSubWindow *)));
  12. }

  13. void MdiWindow::mdiSlot(QMdiSubWindow *window)
  14. {
  15.     if(window!=0)
  16.     {
  17.         text1->clear();
  18.         text2->clear();

  19.         QTextEdit *temp = (QTextEdit*)(window->widget());
  20.         temp->setText(tr("我获取列焦点"));
  21.     }
  22. }



相关文章
|
4月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
97 0
|
7月前
MFC编程 -- 运行窗口居中显示
MFC编程 -- 运行窗口居中显示
75 0
|
7月前
|
Linux
Qt实现多文档窗口
Qt实现多文档窗口
|
编解码
UE中使用Editor Utility Widget创建编辑器工具
UE中使用Editor Utility Widget创建编辑器工具
463 0
UE中使用Editor Utility Widget创建编辑器工具
零基础VB教程055期:drivelistbox等三个控件级联查找文件
零基础VB教程055期:drivelistbox等三个控件级联查找文件
130 0
|
图形学
零基础VB教程046期:如何制作自己的记事本第1节?toolbar控件与imagelist控件
零基础VB教程046期:如何制作自己的记事本第1节?toolbar控件与imagelist控件
106 0
|
编解码 Windows
Linux-SmartHome-QML-6-主窗口实现全屏显示
Linux-SmartHome-QML-6-主窗口实现全屏显示
440 0
Linux-SmartHome-QML-6-主窗口实现全屏显示
EMF+GEF的属性页问题
最近有朋友问使用EMF作为GEF模型时,如何在选中editpart时在属性页里显示属性的问题。是的,因为GEF是这样判断是否填充属性 页的: public Object getAdapter(Class key) {     if (IPropertySource.
1344 0