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等文件
略