使用QT实现MDI风格的主窗体
来源:互联网 发布:美工详情页思路 编辑:程序博客网 时间:2024/05/25 16:38
转载至:http://blog.csdn.net/henreash/article/details/7618414
QT提供了MDIArea控件可以很方便的实现标准的MDI窗体,但用起来并不方便.感觉像360浏览器一样通过页签来切换子窗体的方式比较好.点击菜单项或工具栏上的按钮创建新的页签,并生成一个子窗体.点击页签上的叉号关闭页签并释放子窗体对象.为了实现这种风格的MDI,可以借助QT的TabWidget控件,设置其tabsClosable属性为true,即可在页签上显示叉号.点击页签上的叉号时出发tabWidget控件的tabCloseRequested(int)信号,我们只需要定义一个响应的槽来处理关闭页签的信号即可.
#include "qtmdi.h"
QTMdi::QTMdi(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
ui.setupUi(this);
delete ui.tab; //删除tabWidget上默认带有的两个页签
delete ui.tab_2;
connect(ui.actionChild1, SIGNAL(triggered(bool)), this, SLOT(action1Triggered(bool)));//关联菜单的action触发信号的槽,创建新的子窗体
connect(ui.actionChild2, SIGNAL(triggered(bool)), this, SLOT(action2Triggered(bool)));
connect(ui.tabWidget, SIGNAL(tabCloseRequested(int)), this, SLOT(tabCloseRequested(int)));//点击页签上的叉号触发
}
QTMdi::~QTMdi()
{
}
void QTMdi::tabCloseRequested(int index)
{
QString tabCaption = ui.tabWidget->tabText(index);
if(QMessageBox::question(this, tr("Message"), tr("是否要关闭页签:") + tabCaption, QMessageBox::Yes | QMessageBox::No) == QMessageBox::Yes)
delete ui.tabWidget->widget(index);//关闭页签并释放掉对应的widget控件对象
}
void QTMdi::action1Triggered(bool checked)
{
for(int i = 0; i < ui.tabWidget->count(); i++)//首先根据要在页签上显示的字符串查找释放已经创建了,如果已创建则将这个页签激活(显示)
if(ui.tabWidget->tabText(i) == tr("Child1"))
{
ui.tabWidget->setCurrentIndex(i);
return;
}
child1 *c1 = new child1(this);//没有找到则创建一个并加入到tabWidget
ui.tabWidget->addTab(c1, tr("Child1"));
c1->showMaximized();
}
void QTMdi::action2Triggered(bool checked)
{
for(int i = 0; i < ui.tabWidget->count(); i++)
if(ui.tabWidget->tabText(i) == tr("Child2"))
{
ui.tabWidget->setCurrentIndex(i);
return;
}
child2 *c2 = new child2(this);
ui.tabWidget->addTab(c2, tr("Child2"));
c2->showMaximized();
}
- 使用QT实现MDI风格的主窗体
- 使用QT实现MDI风格的主窗体
- 使用Qt实现MDI风格的主窗体
- 使用WPF实现MDI窗体的方法
- 创建Tab风格的Mdi窗体
- DevExpress窗体风格应用以及MDI子窗体风格的应用
- mdi多层子窗体的实现
- [WPF]WPF实现MDI窗体的方法
- WPF实现MDI窗体的方法
- WPF MDI窗体的实现方法
- WPF实现MDI窗体
- 实现Ribbon风格的窗体
- 实现Ribbon风格的窗体
- 实现Ribbon风格的窗体
- c# mdi多窗体实现
- MDI窗体的工具栏合并(ToolStrip Merging)的功能实现
- MDI窗体的工具栏合并(ToolStrip Merging)的功能实现
- MDI窗体的工具栏合并(ToolStrip Merging)的功能实现
- 在DedeCMS中建立采集点
- 2012-07-22
- (莱昂氏unix源代码分析导读-39)inode“资源”的获取和释放
- 编译原理 语法树 句柄 简单短语 短语
- 关于ASP.NET中面包屑(SiteMapPath控件)使用
- 使用QT实现MDI风格的主窗体
- Python学习笔记
- JSON 日期处理
- Python中使用正则表达式
- (莱昂氏unix源代码分析导读-40)inode“指向文件的内容”的读写
- Python运行执行模式
- Python 程序员的进化
- java中tcp多人对话的一个tcp例子
- android开发中WebView的使用(附完整程序)