Qt多文档界面应用设计
2014-12-08 17:14
411 查看
使用Qt编写多文档界面(MDI)应用相当方便,主要会使用到QMdiArea和QMdiSubWindow两个类。可以查看Qt Asistant中这两个类的说明文档,里面介绍的相当详细。另外,可以搜索例程"Mdi Example",这是提供的一个示例程序,这是一个多文档编辑器,代码很详细,只是缺少注释,不过很简单,应该容易看懂。接下来,我在这里介绍最简单、最精华的部分。
1 QMdiArea
这个类相当于一个MDI窗口管理器,用来管理添加到这个区域中的多个子窗口。我们在应用中新建的所有子窗口都需要通过addSubWindow()方法添加到其中。一般情况下,QMdiArea被用作QMainWindow的中央部件,但是,你也可以将它添加到任意的布局中。下面的代码就是将其添加到中央部件:
View Code
2 QMdiSubWindow
这个类继承自QWidget,主要用来创建MDI子窗体实例。然后,可以通多调用QMdiArea的addSubWindow()方法将新建的子窗体实例添加到多文档界面区域。当然,我们也可以不用QMdiSubWindow类来创建子窗体,而直接使用继承自QWidget的类,比如下面的代码:
View Code
不过,使用QMdiSubWindow类的话,我们可以使用其提供的一些方便的成员方法,详细内容请参看帮助手册,下面给出一段示例代码:
View Code
3 示例程序
最后,再给出一个简单的应用示例。这个代码中,我们使用最简单的Qt向导创建一个QMainWindow应用。然后,在菜单中添加一个“New”菜单项,用来每次创建一个子窗体,并显示在MDI区域。每个子窗体就是一个QLabel部件,用来显示一个标签。构造函数代码如下:
View Code
对应的新建子窗体槽函数定义如下:
View Code
程序运行效果如下:
转载自:http://www.cnblogs.com/xiaomanon/p/4151223.html
1 QMdiArea
这个类相当于一个MDI窗口管理器,用来管理添加到这个区域中的多个子窗口。我们在应用中新建的所有子窗口都需要通过addSubWindow()方法添加到其中。一般情况下,QMdiArea被用作QMainWindow的中央部件,但是,你也可以将它添加到任意的布局中。下面的代码就是将其添加到中央部件:
1 QMainWindow *mainWindow = new QMainWindow; 2 mainWindow->setCentralWidget(mdiArea);
View Code
2 QMdiSubWindow
这个类继承自QWidget,主要用来创建MDI子窗体实例。然后,可以通多调用QMdiArea的addSubWindow()方法将新建的子窗体实例添加到多文档界面区域。当然,我们也可以不用QMdiSubWindow类来创建子窗体,而直接使用继承自QWidget的类,比如下面的代码:
1 void MainWindow::actNewWindow() 2 { 3 QLabel *label = new QLabel; 4 m_mdiArea->addSubWindow(label); 5 label->show(); 6 }
View Code
不过,使用QMdiSubWindow类的话,我们可以使用其提供的一些方便的成员方法,详细内容请参看帮助手册,下面给出一段示例代码:
1 void MainWindow::actNewWindow() 2 { 3 QLabel *label = new QLabel; 4 QMdiSubWindow *subWin = new QMdiSubWindow; 5 subWin->setWidget(label); 6 subWin->setAttribute(Qt::WA_DeleteOnClose); 7 m_mdiArea->addSubWindow(subWin); 8 subWin->show(); 9 }
View Code
3 示例程序
最后,再给出一个简单的应用示例。这个代码中,我们使用最简单的Qt向导创建一个QMainWindow应用。然后,在菜单中添加一个“New”菜单项,用来每次创建一个子窗体,并显示在MDI区域。每个子窗体就是一个QLabel部件,用来显示一个标签。构造函数代码如下:
1 #include "mainwindow.h" 2 #include "ui_mainwindow.h" 3 4 MainWindow::MainWindow(QWidget *parent) : 5 QMainWindow(parent), 6 ui(new Ui::MainWindow) 7 { 8 ui->setupUi(this); 9 10 //Create a MDI Area 11 m_mdiArea = new QMdiArea; 12 this->setCentralWidget(m_mdiArea); 13 14 connect(ui->actionNew, SIGNAL(triggered()), this, SLOT(actNewWindow())); 15 }
View Code
对应的新建子窗体槽函数定义如下:
1 void MainWindow::actNewWindow() 2 { 3 QLabel *label = new QLabel(tr("MDI SubWindow!")); 4 QMdiSubWindow *subWin = new QMdiSubWindow; 5 subWin->setWidget(label); 6 subWin->setAttribute(Qt::WA_DeleteOnClose); 7 m_mdiArea->addSubWindow(subWin); 8 subWin->show(); 9 }
View Code
程序运行效果如下:
转载自:http://www.cnblogs.com/xiaomanon/p/4151223.html
相关文章推荐
- Qt多文档界面应用设计
- Android应用界面设计官方指导文档
- 多文档界面设计
- 分享一个关于Symbian上开发QT应用的文档吧
- 使用designer-qt3设计界面,生成对应.h和.cpp文件时遇到的问题
- COM组件设计与应用学习1-------复合文档
- COM组件设计与应用学习1-------复合文档
- 设计文档: GPS应用开发
- QT 界面美化之 QStyle 应用
- 【技术应用】用QT编写的视频监控界面
- Android 4.0应用界面设计分析
- 【技术应用】用QT编写的视频监控界面
- Android应用开发笔记(13): Android移动应用界面的模板化设计
- 实战开发问题总结(界面设计)----android应用如何适配于多个分辨率的手机
- qt快速界面设计
- 网页设计教程:Web应用界面的十个实用技术(组图)
- 搜应用网是中国最丰富的手机资源下载站,为你提供精彩的手机图片.手机应用软件.手机游戏,定制服务手机用户的个性化需求,是广大手机用户.手机开发者.手机软件界面设计人员的广阔乐园.
- Android移动应用界面的模板化设计【自定义BaseActivity】
- Android 应用界面设计
- 33 IOS 手机应用软件界面设计灵感