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

相关文章

QT移植到RK3568开发板的方法步骤

《QT移植到RK3568开发板的方法步骤》本文主要介绍了QT移植到RK3568开发板的方法步骤,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录前言一、获取SDK1. 安装依赖2. 获取SDK资源包3. SDK工程目录介绍4. 获取补丁包二

Qt把文件夹从A移动到B的实现示例

《Qt把文件夹从A移动到B的实现示例》本文主要介绍了Qt把文件夹从A移动到B的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学... 目录如何移动一个文件? 如何移动文件夹(包含里面的全部内容):如何删除文件夹:QT 文件复制,移动(

MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析

《MyBatis-Plus中Service接口的lambdaUpdate用法及实例分析》本文将详细讲解MyBatis-Plus中的lambdaUpdate用法,并提供丰富的案例来帮助读者更好地理解和应... 目录深入探索MyBATis-Plus中Service接口的lambdaUpdate用法及示例案例背景

MyBatis-Plus中静态工具Db的多种用法及实例分析

《MyBatis-Plus中静态工具Db的多种用法及实例分析》本文将详细讲解MyBatis-Plus中静态工具Db的各种用法,并结合具体案例进行演示和说明,具有很好的参考价值,希望对大家有所帮助,如有... 目录MyBATis-Plus中静态工具Db的多种用法及实例案例背景使用静态工具Db进行数据库操作插入

Qt实现发送HTTP请求的示例详解

《Qt实现发送HTTP请求的示例详解》这篇文章主要为大家详细介绍了如何通过Qt实现发送HTTP请求,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1、添加network模块2、包含改头文件3、创建网络访问管理器4、创建接口5、创建网络请求对象6、创建一个回复对

Spring中@Lazy注解的使用技巧与实例解析

《Spring中@Lazy注解的使用技巧与实例解析》@Lazy注解在Spring框架中用于延迟Bean的初始化,优化应用启动性能,它不仅适用于@Bean和@Component,还可以用于注入点,通过将... 目录一、@Lazy注解的作用(一)延迟Bean的初始化(二)与@Autowired结合使用二、实例解

Qt 中集成mqtt协议的使用方法

《Qt中集成mqtt协议的使用方法》文章介绍了如何在工程中引入qmqtt库,并通过声明一个单例类来暴露订阅到的主题数据,本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一,引入qmqtt 库二,使用一,引入qmqtt 库我是将整个头文件/源文件都添加到了工程中进行编译,这样 跨平台

前端原生js实现拖拽排课效果实例

《前端原生js实现拖拽排课效果实例》:本文主要介绍如何实现一个简单的课程表拖拽功能,通过HTML、CSS和JavaScript的配合,我们实现了课程项的拖拽、放置和显示功能,文中通过实例代码介绍的... 目录1. 效果展示2. 效果分析2.1 关键点2.2 实现方法3. 代码实现3.1 html部分3.2

mysqld_multi在Linux服务器上运行多个MySQL实例

《mysqld_multi在Linux服务器上运行多个MySQL实例》在Linux系统上使用mysqld_multi来启动和管理多个MySQL实例是一种常见的做法,这种方式允许你在同一台机器上运行多个... 目录1. 安装mysql2. 配置文件示例配置文件3. 创建数据目录4. 启动和管理实例启动所有实例

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学