【第七篇】Qt学习与使用---TreeView目录以及其点击事件

1、目的

    想要写一个目录,可以列出某一路径下所有的 文件,并且可以点击打开。(初始是想做一个阅读器程序 )

2、思路

(1)首先需要将文件名称以目录的 形式列出。

(2)可以打开不同类型的文件,如  文件夹,PDF,doc,csv, 图片等等。

(3)其他。

3、关键知识准备

(1)QTreeView

文件名称自动分层获取。如下图所示,层数可以层数可以任意多层。

【第七篇】Qt学习与使用---TreeView目录以及其点击事件_第1张图片

得到目录的核心代码:

//---------------------------------------
    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、未编辑完,待续。。。

你可能感兴趣的:(Qt,C++)