Qt:文件系统浏览实例(QDir、QFileInfoList、QListWidgetItem)

本文主要是介绍Qt:文件系统浏览实例(QDir、QFileInfoList、QListWidgetItem),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言:

文件系统的浏览是目录操作的一个常用功能,下面通过程序,实现一个能够显示所有文件的浏览功能。

讲一讲如何使用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的取值如下:



参数三:指定列表的排序方式。如:按文件大小、文件类型、文件名称等。


这篇关于Qt:文件系统浏览实例(QDir、QFileInfoList、QListWidgetItem)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/167077

相关文章

java图像识别工具类(ImageRecognitionUtils)使用实例详解

《java图像识别工具类(ImageRecognitionUtils)使用实例详解》:本文主要介绍如何在Java中使用OpenCV进行图像识别,包括图像加载、预处理、分类、人脸检测和特征提取等步骤... 目录前言1. 图像识别的背景与作用2. 设计目标3. 项目依赖4. 设计与实现 ImageRecogni

Java操作ElasticSearch的实例详解

《Java操作ElasticSearch的实例详解》Elasticsearch是一个分布式的搜索和分析引擎,广泛用于全文搜索、日志分析等场景,本文将介绍如何在Java应用中使用Elastics... 目录简介环境准备1. 安装 Elasticsearch2. 添加依赖连接 Elasticsearch1. 创

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

基于Qt Qml实现时间轴组件

《基于QtQml实现时间轴组件》时间轴组件是现代用户界面中常见的元素,用于按时间顺序展示事件,本文主要为大家详细介绍了如何使用Qml实现一个简单的时间轴组件,需要的可以参考下... 目录写在前面效果图组件概述实现细节1. 组件结构2. 属性定义3. 数据模型4. 事件项的添加和排序5. 事件项的渲染如何使用

基于Qt开发一个简单的OFD阅读器

《基于Qt开发一个简单的OFD阅读器》这篇文章主要为大家详细介绍了如何使用Qt框架开发一个功能强大且性能优异的OFD阅读器,文中的示例代码讲解详细,有需要的小伙伴可以参考一下... 目录摘要引言一、OFD文件格式解析二、文档结构解析三、页面渲染四、用户交互五、性能优化六、示例代码七、未来发展方向八、结论摘要

Golang使用minio替代文件系统的实战教程

《Golang使用minio替代文件系统的实战教程》本文讨论项目开发中直接文件系统的限制或不足,接着介绍Minio对象存储的优势,同时给出Golang的实际示例代码,包括初始化客户端、读取minio对... 目录文件系统 vs Minio文件系统不足:对象存储:miniogolang连接Minio配置Min

Oracle Expdp按条件导出指定表数据的方法实例

《OracleExpdp按条件导出指定表数据的方法实例》:本文主要介绍Oracle的expdp数据泵方式导出特定机构和时间范围的数据,并通过parfile文件进行条件限制和配置,文中通过代码介绍... 目录1.场景描述 2.方案分析3.实验验证 3.1 parfile文件3.2 expdp命令导出4.总结

MySQL的索引失效的原因实例及解决方案

《MySQL的索引失效的原因实例及解决方案》这篇文章主要讨论了MySQL索引失效的常见原因及其解决方案,它涵盖了数据类型不匹配、隐式转换、函数或表达式、范围查询、LIKE查询、OR条件、全表扫描、索引... 目录1. 数据类型不匹配2. 隐式转换3. 函数或表达式4. 范围查询之后的列5. like 查询6

python与QT联合的详细步骤记录

《python与QT联合的详细步骤记录》:本文主要介绍python与QT联合的详细步骤,文章还展示了如何在Python中调用QT的.ui文件来实现GUI界面,并介绍了多窗口的应用,文中通过代码介绍... 目录一、文章简介二、安装pyqt5三、GUI页面设计四、python的使用python文件创建pytho

QT实现TCP客户端自动连接

《QT实现TCP客户端自动连接》这篇文章主要为大家详细介绍了QT中一个TCP客户端自动连接的测试模型,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录版本 1:没有取消按钮 测试效果测试代码版本 2:有取消按钮测试效果测试代码版本 1:没有取消按钮 测试效果缺陷:无法手动停