使用Qt实现MDI风格的主窗体
来源:互联网 发布:巴西农业部数据 mapa 编辑:程序博客网 时间:2024/05/27 19:26
文章来源:http://hi.baidu.com/wuyunju/item/3d20164c99a276f6dc0f6c52
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)的功能实现
- 解决使用AJAX传中文参数乱码问题
- a:link,a:visited,a:hover,a:active
- java注解demo
- Unity 3D 开发技巧分享&工具推荐
- Java Web 监听器 (计算在线人数)
- 使用Qt实现MDI风格的主窗体
- 内核中与驱动相关的内存操作之十六(异步I/O)
- MySQL常用到的一些phpmyadmin配置总结
- 指针常量和常量指针
- 点到线段的垂直距离
- webview出错
- 射线和三角形相交检测
- java正则表达式基础
- Ubuntu切换到ROOT账户 (copied)