Qt之QTreeWidget添加节点获取节点
发布日期:2021-05-14 22:41:10 浏览次数:13 分类:精选文章

本文共 3751 字,大约阅读时间需要 12 分钟。

Qt之QTreeWidget添加节点获取节点

概述:

QTreeWidget 类根据预设的模型提供树形显示控件。

QTreeWidget 使用类似于 QListWidget 类的方式提供一种典型的基于 item 的树形交互方法类,该类基于QT的“模型/视图”结构,提供了默认的模型来支撑 item 的显示,这些 item 类为 QTreeWidgetItem 类。
如果不需要灵活的“模型/视图”框架,可以使用QTreeWidget 来创建有层级关系的树形结构。当把标准 item 模型结合 QTreeView 使用时,可以得到更灵活的使用方法,从而把“数据”和“显示”分离开。

代码示例:

.h

#ifndef MYTREEWIDGET_H#define MYTREEWIDGET_H#include 
#include
#include
#include
namespace Ui { class MyTreeWidget;}class MyTreeWidget : public QWidget{ Q_OBJECTpublic: explicit MyTreeWidget(QWidget *parent = 0); ~MyTreeWidget();private: /** * @brief initTree1 初始化树 */ void initTree1(); void initTree2(); /** * @brief GetNode 获取节点 */ void GetNode();private: Ui::MyTreeWidget *ui; QTreeWidgetItem *item; //根节点(根节点下可以有多个子结点) QTreeWidgetItem *itemD; //子节点(子点下可以有多个孙子结点) QTreeWidgetItem *itemW; //子节点};#endif // MYTREEWIDGET_H

.cpp

#include "MyTreeWidget.h"#include "ui_MyTreeWidget.h"MyTreeWidget::MyTreeWidget(QWidget *parent) :    QWidget(parent),    ui(new Ui::MyTreeWidget){       ui->setupUi(this);    item = new QTreeWidgetItem;    item->setText(0,"Qt.Fantast");    ui->treeWidget->addTopLevelItem(item);//添加根节点    initTree1();    initTree2();    GetNode();}MyTreeWidget::~MyTreeWidget(){       delete ui;}void MyTreeWidget::initTree1(){       itemW = new QTreeWidgetItem;    itemW->setText(0,"Qt");    item->addChild(itemW);//插入在根节点下面    QString path = QString("D:/QtApp/C++DesignPayyerns/Plant");    QDir dir(path);    QStringList list;    list << "*.cpp" << "*.h";    QStringList files = dir.entryList(list);    for(int i=0;i
setText(0,name); itemW->addChild(itemWW);//插入在根节点下面 }}void MyTreeWidget::initTree2(){ itemD = new QTreeWidgetItem; itemD->setText(0,"Ui"); item->addChild(itemD);//插入在根节点下面 QString path = QString("D:/QtApp/C++DesignPayyerns/Command"); QDir dir(path); QStringList list; list << "*.cpp" << "*.h"; QStringList files = dir.entryList(list); for(int i=0;i
setText(0,name); itemD->addChild(itemDD);//插入在根节点下面 }}void MyTreeWidget::GetNode(){ int num = ui->treeWidget->topLevelItemCount(); //返回根节点数量 qDebug() << num; int clolum = ui->treeWidget->columnCount(); //返回列数 qDebug() << clolum; for(int i=0;i< num;i++)//遍历获取根节点文字 { QTreeWidgetItem *item = ui->treeWidget->topLevelItem(i);//获取最高节点 qDebug()<< item->text(0); } for(int i=0;i < item->childCount();i++) { QTreeWidgetItem *child = item->child(i);//获取子节点 QString text =child->text(0); qDebug() << text;// 我 敌 此方法相同于下面两个循环 } for(int i = 0;i < itemW->childCount();i++) { QTreeWidgetItem *child = itemW->child(i);//获取子节点 QString text =child->text(0); qDebug() << text; } for(int i = 0;i < itemD->childCount();i++) { QTreeWidgetItem *child = itemD->child(i);//获取子节点 QString text =child->text(0); qDebug() << text; }}// QString currDir = QString("%1/LogFile/").arg(QDir::currentPath());// QDir Dir(currDir); //查看工作路径是否存在// if(!Dir.exists()){ Dir.mkdir(currDir);} //如果文件夹不存在则新创建文件夹// Dir.setFilter(QDir::Files); //设置过滤器只查看文件// QStringList list = Dir.entryList(QDir::Files); //获取所有文件// foreach (QFileInfo file, list) //遍历只加载.txt到文件列表// { // if(file.fileName().split(".").back() == "txt")// { // ui->logName->addItem(file.fileName()/*.split(".").at(0)*/);// }

效果图:

在这里插入图片描述

over:

欢迎大家关注作者在文末评论、点赞、转发以及批评指正!

如果大家有更好的方法或有问题可以在文末评论一起讨论!
共同学习!
共同进步!

文末一句话:

人,切莫自以为是,地球离开了谁都会转,古往今来,恃才放肆的人都没有好下场。

所以,即便再能干,也一定要保持谦虚谨慎,做好自己的事情,是金子总会发光。

上一篇:Qt之QTableWidget Tip气泡消息
下一篇:C++之容器Vector

发表评论

最新留言

不错!
[***.144.177.141]2025年04月25日 13时27分44秒