Qt实现多文档窗口

简介: Qt实现多文档窗口

Qt实现多文档窗口

这次实现一个多文档窗口,左边目录,右边显示页面。点击目录可以跳转显示对应的页面。

主要是两个类:QTreeWidget和QMdiArea

目录实现:

QTreeWidget *m_ptreewgtWgt = new QTreeWidget();
m_ptreewgtWgt->setHeaderLabel(tr("目录"));
QTreeWidgetItem *qtreewgtTitle1 = new QTreeWidgetItem(m_ptreewgtWgt);
qtreewgtTitle1->setText(0, "Title1");
QTreeWidgetItem *qtreewgtcapt1 = new QTreeWidgetItem(qtreewgtTitle1);
qtreewgtcapt1->setText(0, "capter1");
QTreeWidgetItem *qtreewgtTitle2 = new QTreeWidgetItem(m_ptreewgtWgt);
qtreewgtTitle2->setText(0, "Title2");
QTreeWidgetItem *qtreewgtcapt2 = new QTreeWidgetItem(qtreewgtTitle2);
qtreewgtcapt2->setText(0, "capter2");

需要注意的就是QTreeWidgetItem基于对应的父节点创建

通过connect连接相应的信号与槽:

connect(m_ptreewgtWgt,SIGNAL(itemDoubleClicked(QTreeWidgetItem*,int)), this,SLOT(emititemClicked(QTreeWidgetItem* ,int)));

槽函数:

void MainWindow::emititemClicked(QTreeWidgetItem *item, int column)
{
//拿到点击的目录结点的指针,可以在这里显示对应的页面
}

效果图:

注意

connect在连接信号与槽时,对应的函数不能加形参,否则会出错。官方文档:

目录建立完成,再来创建多文档窗口:

初始化一个QMdiArea 
QMdiArea *m_pmdiareaArea = new QMdiArea();
m_pmdiareaArea->setViewMode(QMdiArea::TabbedView);
m_pmdiareaArea->setTabsClosable(true);

可以通过QMdiArea中的addSubWindow函数添加多个窗口,或者QTextEdit。比如:

QTextEdit *qtexteditWel = new QTextEdit();
qtexteditWel->setHtml("<b>Hello</b> <i>Qt!</i>");
qtexteditWel->setWindowTitle("Welcome");
qtexteditWel->setReadOnly(true);
m_pmdiareaArea->addSubWindow(qtexteditWel);
qtexteditWel->showMaximized();

QTextEdit可以用来显示HTML页面,包括表格和图像等。

QTextEdit can display a large HTML subset, including tables and images.

还有一点值得注意的是:

m_pmdiareaArea->addSubWindow(qtexteditWel);
qtexteditWel->showMaximized();

这两行的顺序不能反,否则会得到意想不到的结果。

至此就实现了一个多文档窗口,是不是很简单。

效果图:

项目源码:

https://gitee.com/gao-yuelong/qtdemo

Linux命令:

sl命令:跑火车

这个命令需要下载,当你输入 ls 不小心输成了sl 时,你可能就需要休息一下了。


相关文章
|
3月前
|
监控 C++ 容器
【qt】MDI多文档界面开发
【qt】MDI多文档界面开发
70 0
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
494 4
【Qt 学习笔记】Qt窗口 | 标准对话框 | 消息对话框QMessageBox
|
3月前
|
C++ Windows
Qt 窗口置顶
Qt 窗口置顶
98 1
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 文件对话框QFileDialog
587 4
|
3月前
|
数据安全/隐私保护
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
【Qt 学习笔记】Qt窗口 | 对话框 | 模态与非模态对话框的创建
314 4
|
3月前
|
搜索推荐 C++
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
【Qt 学习笔记】Qt窗口 | 对话框 | 创建自定义对话框
56 4
|
3月前
|
API UED
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
【Qt 学习笔记】Qt窗口 | 状态栏 | QStatusBar的使用及说明
312 4
|
3月前
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 输入对话框QInputDialog
199 3
|
3月前
|
数据可视化
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
【Qt 学习笔记】Qt窗口 | 标准对话框 | 字体对话框QFontDialog
67 3