【第七篇】Qt學習與使用---TreeView目錄以及其點選事件
阿新 • • 發佈:2018-12-12
1、目的
想要寫一個目錄,可以列出某一路徑下所有的 檔案,並且可以點選開啟。(初始是想做一個閱讀器程式 )
2、思路
(1)首先需要將檔名稱以目錄的 形式列出。
(2)可以開啟不同型別的檔案,如 資料夾,PDF,doc,csv, 圖片等等。
(3)其他。
3、關鍵知識準備
(1)QTreeView
檔名稱自動分層獲取。如下圖所示,層數可以層數可以任意多層。
得到目錄的核心程式碼:
//--------------------------------------- filepath = "E:\\keilworks"; //---------------------------------------- model = new QStandardItemModel(); findAllFile(filepath); model->setHeaderData(0, Qt::Horizontal, filepath); //設定頭資料 //---------------------------------------- ui->treeView->setModel(model);
bool MainWindow::findAllFile(const QString &fromDir,QStandardItem *itemX) { QDir sourceDir(fromDir); QFileInfoList fileInfoList = sourceDir.entryInfoList(); foreach(QFileInfo fileInfo, fileInfoList) { if(fileInfo.fileName() == "." || fileInfo.fileName() == "..") continue; // QStandardItem *item = new QStandardItem(fileInfo.fileName()); if(fileInfo.isDir()) { item->setIcon(QIcon(":/picture/Dir.png")); if(!findAllFile(fileInfo.filePath(),item)) { return false; } } else { item->setIcon(QIcon(":/picture/TexT.png")); } //----------(記錄檔名,顯示) if(itemX==NULL)model->setItem(model->rowCount(), 0, item); else itemX->appendRow(item); } return true; }
(2)雙擊獲取檔名稱和檔案地址。
(3)開啟PDF等檔案
略