直接上代码了 资源文件的图片都是我截的、
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include <QWidget>
#include <QTreeWidget> // 树控件
#include <QTreeWidgetItem> // 树的子节点
#include <QSplitter> // 分割器
#include <QTextEdit> // 富文本
#include <QHBoxLayout> // 水平布局
#include <QIcon> // 图标
#include <QFile> // 文件
#include <QIODevice>// 文件流
#include <QTextStream>// 文本流
#include <QDebug>
#include <QDir>
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
public slots:
void TextFile(QTreeWidgetItem *item, int index);
private:
QTreeWidget *tree; // 树的头节点
QTreeWidgetItem *item1; // 子节点
QTreeWidgetItem *item2;
QTreeWidgetItem *item3;
QTreeWidgetItem *item4;
QTreeWidgetItem *item5;
QTreeWidgetItem *item6;
QTreeWidgetItem *item7;
QTreeWidgetItem *item8;
QTreeWidgetItem *item9;
QTextEdit *textedit; // 富文本
QSplitter *splitter; // 分离器
QHBoxLayout *hboxlayout;// 水平布局
};
#endif // WIDGET_H
widget.cpp
#include "widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
splitter = new QSplitter(Qt::Horizontal); // 水平分离器
tree = new QTreeWidget(splitter); // 树的头结点在分离器中
item1 = new QTreeWidgetItem(tree,QStringList("QTree_QSplitter")); // new子节点
item2 = new QTreeWidgetItem(item1,QStringList("QTree_QSplitter.pro"));
item3 = new QTreeWidgetItem(item1,QStringList("Headers"));
item4 = new QTreeWidgetItem(item1,QStringList("Sources"));
item5 = new QTreeWidgetItem(item3,QStringList("widget.h"));
item6 = new QTreeWidgetItem(item4,QStringList("main.cpp"));
item7 = new QTreeWidgetItem(item4,QStringList("widget.cpp"));
item8 = new QTreeWidgetItem(item1,QStringList("Resources"));
item9 = new QTreeWidgetItem(item8,QStringList("Resources.qrc"));
item1->setIcon(0,QIcon(":images/Qt.png")); // 设置图标
item2->setIcon(0,QIcon(":images/pro.png"));
item3->setIcon(0,QIcon(":images/h.png"));
item4->setIcon(0,QIcon(":images/c++.png"));
item5->setIcon(0,QIcon(":images/ch.png"));
item6->setIcon(0,QIcon(":images/cpp.png"));
item7->setIcon(0,QIcon(":images/cpp.png"));
item8->setIcon(0,QIcon(":images/qrc.png"));
item9->setIcon(0,QIcon(":images/qrcc.png"));
tree->setHeaderHidden(true); // 隐藏头标
splitter->setOpaqueResize(true); // 分离器滑动时刻更新
connect(tree,SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int))
,this,SLOT(TextFile(QTreeWidgetItem *,int)));
textedit = new QTextEdit(tr(""),splitter);
splitter->show();
resize(200,200);
}
Widget::~Widget()
{
}
void Widget::TextFile(QTreeWidgetItem *item, int index)
{
QString is;
if(item->text(index) == "widget.h"){
QFile file("../QTree_QSplitter/widget.h"); // 这个是相对路径相对与你exe与访问的文件夹位置 QString s = QDir::currentPath()+"/widget.h";
if(!file.open(QIODevice::ReadOnly)){ // 只读模式 打开文件夹
qDebug()<<"打开widget.h失败";
}
QTextStream in(&file);
is = in.readAll();
textedit->setText(is);
}
else if(item->text(index) == "main.cpp"){
QFile file("../QTree_QSplitter/main.cpp");
if(!file.open(QIODevice::ReadOnly)){
qDebug()<<"打开widget.h失败";
}
QTextStream in(&file);
is = in.readAll();
textedit->setText(is);
}
else if(item->text(index) == "widget.cpp"){
QFile file("../QTree_QSplitter/widget.cpp");
if(!file.open(QIODevice::ReadOnly)){
qDebug()<<"打开widget.h失败";
}
QTextStream in(&file);
is = in.readAll();
textedit->setText(is);
}
}
main.cpp
#include "widget.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
// w.show();
return a.exec();
}