Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5790002
  • 博文数量: 409
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 8273
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-23 19:15
个人简介

qq:78080458 学习交流群:150633458

文章分类

全部博文(409)

文章存档

2019年(127)

2018年(130)

2016年(20)

2015年(60)

2014年(41)

2013年(31)

分类: 嵌入式

2016-02-17 08:37:07

一、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. }



阅读(3475) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~