1. 程式人生 > >【第七篇】Qt學習與使用---TreeView目錄以及其點選事件

【第七篇】Qt學習與使用---TreeView目錄以及其點選事件

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等檔案

 

4、未編輯完,待續。。。