Qt:文件系统浏览实例(QDir、QFileInfoList、QListWidgetItem)
来源:互联网 发布:知乎 app 编辑:程序博客网 时间:2024/05/16 01:02
前言:
文件系统的浏览是目录操作的一个常用功能,下面通过程序,实现一个能够显示所有文件的浏览功能。
讲一讲如何使用QDir类以及各种过滤方式显示文件列表。
效果图:
实现步骤:
1、新建工程
工程名默认即可,基类为QDialog。
2、打开“dialog.h”文件
在“dialog.h”文件中添加如下代码:
#ifndef DIALOG_H#define DIALOG_H#include <QDialog>#include <QFileInfoList>#include <QListWidgetItem>#include <QDir>#include <QVBoxLayout>#include <QLineEdit>class Dialog : public QDialog{ Q_OBJECTpublic: Dialog(QWidget *parent = 0); ~Dialog(); void showFileInfoList(QFileInfoList list);public slots: void slotShow(QDir dir); void slotDirShow(QListWidgetItem *item);private: QLineEdit *fileLineEdit; QListWidget *fileListWidget; QVBoxLayout *mainLayout;};#endif // DIALOG_H
3、打开“dialog.cpp”文件
添加如下代码:
#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 = "C:"; //可以更改盘符 QDir rootDir(root); QStringList string; string<<"*"; QFileInfoList list = rootDir.entryInfoList(string); showFileInfoList(list);}Dialog::~Dialog(){}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(); QDir dir; dir.setPath(fileLineEdit->text()); dir.cd(str); fileLineEdit->setText(dir.absolutePath()); slotShow(dir);}
4、“main.cpp”中保持默认。
运行效果前文所示。
解析:
1、QFileInfoList QDir::entryInfoList(const QStringList & nameFilters, Filters filters = NoFilter, SortFlags sort = NoSort) const
此函数的返回值是一个QFileInfoList对象,包含当前目录下的所有文件和子目录。
参数一:指定文件名的过滤方式。
参数二:指定文件属性的过滤方式。如目录、文件、读写属性等。
enum QDir::Filter的取值如下:
参数三:指定列表的排序方式。如:按文件大小、文件类型、文件名称等。
6 0
- Qt:文件系统浏览实例(QDir、QFileInfoList、QListWidgetItem)
- Qt-QDir
- QT实例:从QListWidget中删除选中的QListWidgetItem
- QT实例:从QListWidget中删除选中的QListWidgetItem
- QT实例:从QListWidget中删除选中的QListWidgetItem
- Qt读取文件夹 QDir
- Qt学习笔记:QDir
- QT小程序:QDir
- QT之QListWidget与QListWidgetItem
- qt之QListWidget与QListWidgetItem
- QT输入输出(三)之 目录遍历(QDir)
- [Qt笔记]QDir的用法
- QDir
- 文件系统浏览
- 浏览文件系统
- 【Qt官方视频码农】Qt_11-QDir
- [QT]QDir和QFile的基本操作
- qt的资源替换搜索QDir详解
- Coderforces 354Div2
- 反编译 错误提示解决方法
- Shell替换:Shell变量替换,命令替换,转义字符
- iOS Create an CGImageSource
- MongoDB Index using when use sorting in the stress testing.
- Qt:文件系统浏览实例(QDir、QFileInfoList、QListWidgetItem)
- IntelliJ IDEA 12创建Maven管理的Java Web项目(图解)
- Errors occurred during the build.
- 主页添加网络状态
- React基础语法学习
- URLProtocol结构体
- android-SQLite数据库MVC关联实例源码(三层架构)
- MMU学习
- Strobogrammatic Number II