Qt QTreeWidget树桩控件路径文件流小实例

在这里插入图片描述
直接上代码了 资源文件的图片都是我截的
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();
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值