Qt5开发及实例学习之文件系统浏览
时间: 2018-09-28来源:OSCHINA
前景提要
「深度学习福利」大神带你进阶工程师,立即查看>>>
新建QtGUI应用,基于QDialog,取消界面创建 #include "dialog.h" Dialog::Dialog(QWidget *parent) : QDialog(parent) { setWindowTitle(tr("File View")); fileLineEdit = new QLineEdit(tr("/")); fileListWidget = new QListWidget; mainLayout = new QVBoxLayout(this); mainLayout->addWidget(fileLineEdit); mainLayout->addWidget(fileListWidget); connect(fileLineEdit,SIGNAL(returnPressed()),this,SLOT(slotShow(QDir))); connect(fileListWidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),this,SLOT(slotDirShow(QListWidgetItem*))); QString root = "/"; QDir rootDir(root); QStringList string; string << "*"; QFileInfoList list = rootDir.entryInfoList(string); showFileInfoList(list); } Dialog::~Dialog() { } //显示dir下的所有文件 void Dialog::slotShow(QDir dir) { QStringList string; string<<"*"; QFileInfoList list=dir.entryInfoList(string,QDir::AllEntries,QDir::DirsFirst); //文件名的过滤方式。列出目录,文件,磁盘驱动器。目录优先排序 showFileInfoList(list); } //用户双击进入下一级目录,单击".."返回上级,顶部的编辑框显示当前所在的目录,类表显示该目录下所有文件 void Dialog::showFileInfoList(QFileInfoList list) { fileListWidget->clear(); for(unsigned int i = 0; i < list.count(); i++) //从类表中依次取出所有项 { QFileInfo tmpFileInfo = list.at(i); if(tmpFileInfo.isDir()) { QIcon icon("dir.png"); QString fileName = tmpFileInfo.fileName(); QListWidgetItem *tmp = new QListWidgetItem(icon, fileName); fileListWidget->addItem(tmp); } else if(tmpFileInfo.isFile()) { QIcon icon("file.png"); QString fileName=tmpFileInfo.fileName(); QListWidgetItem *tmp = new QListWidgetItem(icon,fileName); fileListWidget->addItem(tmp); } } } //显示下一级目录中的所有文件 void Dialog::slotDirShow(QListWidgetItem * item) { QString str = item->text(); //将下一级的目录名保存在str中 QDir dir; dir.setPath(fileLineEdit->text());//设置QDir对象的路径为当前目录路径 dir.cd(str);//切换路径 fileLineEdit->setText(dir.absolutePath());//刷新当前的目录路径 slotShow(dir); }

entryInfoList按照某种过滤方式获取目录下的文件列表


科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行