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 时,你可能就需要休息一下了。

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

高二的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值