-
大小: 6KB文件類型: .cpp金幣: 1下載: 0 次發布日期: 2021-06-06
- 語言: C/C++
- 標簽: QT??treeWidget??
資源簡介
QT treeWidget 加載指定路徑所有文件夾和文件,帶checkbox
整合了一些網絡文章內容做出來的小程序,拋磚引玉吧
代碼片段和文件信息
#include?“widget.h“
#include?“ui_widget.h“
#include?
#include?
#include?“QDebug“
Widget::Widget(QWidget?*parent)?:
????QWidget(parent)
????ui(new?Ui::Widget)
{
????ui->setupUi(this);
????ui->treeWidget->clear();????//初始化樹形控件
????ui->treeWidget->setHeaderHidden(true);
????ui->treeWidget->setstyleSheet(“QTreeView::item:hover{background-color:rgb(0255050)}“
??????????????“QTreeView::item:selected{background-color:rgb(25500100)}“);
????QString?rootpath=“E:\\Test“;
????QTreeWidgetItem*?root?=?new?QTreeWidgetItem(ui->treeWidget);
????root->setIcon(0?QIcon(“./image/folder.png“));
????root->setText(0rootpath);????//樹形控件顯示的文本信息
????root->setFlags(Qt::ItemIsUserCheckable?|?Qt::ItemIsEnabled?|?Qt::ItemIsSelectable);???//設置樹形控件子項的屬性
????root->setCheckState(0Qt::Unchecked);?//初始狀態沒有被選中
????init(root?rootpath);
????connect(ui->treeWidgetSIGNAL(itemChanged(QTreeWidgetItem*int))thisSLOT(treeItemChanged(QTreeWidgetItem*int)));
????ui->treeWidget->setItemsExpandable(true);
????ui->treeWidget->expandAll();
}
Widget::~Widget()
{
????delete?ui;
}
QFileInfoList?Widget::init(QTreeWidgetItem?*root?QString?path)
{
????/*添加path路徑文件*/
????QDir?dir(path);??????????//遍歷各級子目錄
????QDir?dir_file(path);????//遍歷子目錄中所有文件
????QFileInfoList?file_list=dir.entryInfoList(QDir::Files?|?QDir::Hidden?|?QDir::NoSymlinks);
????QFileInfoList?folder_list?=?dir.entryInfoList(QDir::Dirs?|?QDir::NoDotAndDotDot);???//獲取當前所有目錄
????for(int?i?=?0;?i?!=?folder_list.size();?i++)?????????//自動遞歸添加各目錄到上一級目錄
????{
????????QString?namepath?=?folder_list.at(i).absoluteFilePath();????//獲取路徑
????????QFileInfo?folderinfo=?folder_list.at(i);
????????QString?name=folderinfo.fileName();??????//獲取目錄名
????????//qDebug()<
????????QTreeWidgetItem*?childroot?=?new?QTreeWidgetItem(QStringList()< ????????childroot->setIcon(0?QIcon(“./image/folder.png“));
????????childroot->setText(0name);
????????childroot->setFlags(Qt::ItemIsUserCheckable?|?Qt::ItemIsEnabled?|?Qt::ItemIsSelectable);
????????childroot->setCheckState(0?Qt::Unchecked);
????????root->addChild(childroot);??????????????//將當前目錄添加成path的子項
????????QFileInfoList?child_file_list?=?init(childroot?namepath);??????????//進行遞歸
????????file_list.append(child_file_list);
????????file_list.append(name);
????}
????dir_file.setFilter(QDir::Files?|?QDir::Hidden?|?QDir::NoSymlinks);????????//獲取當前所有文件
????dir_file.setSorting(QDir::Size?|?QDir::Reversed);
????QFileInfoList?list_file?=?dir_file.entryInfoList();
????//qDebug()<
????for?(int?i?=?0;?i?????{
????????QFileInfo?fileInfo?=?list_file.at(i);
????????QString?name2=fileInfo.fileName();
????????//qDebug()<
????????QTreeWidgetItem*?child?=?new?QTreeWidgetItem(QStringList()< ????????child->setIcon(0?QIcon(“./image/file.png“));
????????child->setText(0name2);
????????chi
評論
共有 條評論