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的取值如下:



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


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/253496.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Qt 创建文件 用QFile和QDir类

项目需求是 根据日期创建多级子文件夹, 根目录保存 log.txt 控制台程序实现 如下执行结果 createFile 为程序目录 文档结构: 源码: #include <QtCore/QCoreApplication> #include <QDir> #include <QFile> #include <QDebug> #include <QDateTim…

手写一个webpack插件(plugin)

熟悉 vue 和 react 的小伙伴们都知道&#xff0c;在执行过程中会有各种生命周期钩子&#xff0c;其实webpack也不例外&#xff0c;在使用webpack的时候&#xff0c;我们有时候需要在 webpack 构建流程中引入自定义的行为&#xff0c;这个时候就可以在 hooks 钩子中添加自己的方…

Linux系统下imx6ull QT编程—— C++基础(一)

Linux QT编程 文章目录 Linux QT编程前言一、 C的输入输出方式1.cout语法形式2.cin语法形式3.C之命名空间 namespace 前言 学习 C的面向对象编程&#xff0c;对学习 Qt 有很大的帮助 一、 C的输入输出方式 效率上&#xff0c;肯定是 C 语言的 scanf 和 printf 的效率高&#…

Windows本地提权 · 上篇

目录 at 命令提权 sc 命令提权 ps 命令提权 利用的是windows的特性&#xff0c;权限继承&#xff0c;命令或者服务创建调用的时候会以system权限调用&#xff0c;那么这个命令或者服务的权限也是system。 进程迁移注入提权 pinjector进程注入 MSF进程注入 令牌窃取提权…

【Unity3D】调整屏幕亮度、饱和度、对比度

1 屏幕后处理流程 调整屏幕亮度、饱和度、对比度&#xff0c;需要使用到屏幕后处理技术。因此&#xff0c;本文将先介绍屏幕后处理流程&#xff0c;再介绍调整屏幕亮度、饱和度、对比度的实现。 屏幕后处理即&#xff1a;渲染完所有对象后&#xff0c;得到一张屏幕图像&#xf…

android装备选择,巫师三前期必拿装备武器_巫师三前期必拿最强装备推荐选择_攻略...

巫师三狂猎是巫师系列游戏的第三部&#xff0c;游戏是根据小说改编而来&#xff0c;既有小说的剧情又有精美逼真的游戏画面&#xff0c;曾获奖无数&#xff01;第三部的游戏剧情是讲主人公杰洛特(猎魔人)的最终冒险。游戏以战斗为主&#xff0c;并结合主线任务和支线任务&#…

哈利波特AR游戏-巫师联盟 深度解析

今年AR技术的进展&#xff0c;及相关应用值得我们关注。给大家推荐一个AR游戏&#xff0c;应该会超越Pokemon Go。 [ 哈利波特&#xff1a;巫师联盟 ] 这一天可能是魔法世界最重要的一天 AR游戏《哈利波特:巫师联盟》 于2019年6月20日正式上线。 全世界的哈利波特迷&#xff…

大地图开发管理:《巫师3》Umbra遮挡剔除技术

本演讲介绍巫师3使用Umbra实现的遮挡剔除技术。笔记略过了一些过于平凡的实现细节&#xff0c;包括流的加载&#xff0c;如何向Umbra提交数据&#xff1b;也略过了一半以上关于“游戏应当如何选择中间件”的讨论。Umbra 3Umbra是一个芬兰中间件公司&#xff0c;做出核心技术之后…

《巫师3:狂猎》4.01版更新 PC端已上线

去年12月&#xff0c;《巫师3》免费升级次世代版&#xff0c;加入DLSS 3支持&#xff0c;RTX 40系显卡的用户能直接提升体验感&#xff0c;RTX 30系用户能通过DLSS 2获得更稳定的帧数。 目前。《巫师3&#xff1a;狂猎》4.01版已更新上线&#xff0c;在PC、PlayStation 和 Xbo…

哈利波特3 阿兹卡班的囚徒

《哈利波特3阿兹卡班的囚徒》DVD国语配音高清收藏版《哈利波特3&#xff1a;阿兹卡班的囚徒》 片名&#xff1a;Harry Potter and the Prisoner of Azkaban 译名&#xff1a;哈利波特3&#xff1a;阿兹卡班的囚徒 导演&#xff1a;阿方索卡隆Alfonso Cuaron 主演&#xff1a;丹…

昆特牌显示无法连接至服务器,巫师之昆特牌总是显示无法连接网络

巫师之昆特牌这款游戏相信大家都不陌生吧&#xff0c;最近小编经常收到巫师之昆特牌总是显示无法连接网络问题的反馈&#xff0c;接下来小编就为大家提供几种常见的处理方案。 巫师之昆特牌游戏简介 《巫师之昆特牌》是由CD PROJEKT RED开发的一款卡牌类游戏。 游戏的主角是北方…

c语言谭浩强百草园有卖吗,巫师3白果园有什么神器

巫师3这款游戏中&#xff0c;装备对玩家是有一定的影响的&#xff0c;在白果园中隐藏着两个前期神器&#xff0c;是两件毒蛇学派的装备&#xff0c;在哪里呢&#xff0c;下面游戏吧小编为大家带来介绍。 巫师3白果园有什么神器 白果园神器指的是白果园中毒蛇学派的毒蛇钢剑和毒…

讯飞星火认知大模型与ChatGPT的对比分析

引言&#xff1a; 人工智能是当今科技领域的热门话题&#xff0c;自然语言处理是人工智能的重要分支。自然语言处理的目标是让计算机能够理解和生成自然语言&#xff0c;实现人机交互和智能服务。近年来&#xff0c;随着深度学习的发展&#xff0c;自然语言处理领域出现了许多创…

【数据结构6】二叉树的基本操作

文章目录 ⭐️写在前面的话⭐️二叉树的一些基本操作1、结构定义2、先序创建这棵树3、按满二叉树方式创建4、三种递归遍历5、层次遍历6、求二叉树的深度7、求叶子结点数8、三种非递归遍历9、先序线索化二叉树10、先序线索化后遍历11、中序线索化二叉树12、中序线索化后遍历主函…

C语言——每日一题

1.倒置字符串 倒置字符串 要将每一个单词逆序输出&#xff0c;首先可以将整个字符串内容都逆序输出&#xff0c;然后再将字符串中的每一个单词再进行逆序。 例如&#xff1a;逆序 i like beijing. 先逆序成&#xff1a;.gnijieb ekil i 再将每个单词逆序&#xff1a; beij…

Matlab实现曲线拟合的最小二乘法

实验条件 实验用例 x0102030405060708090y6867.166.465.664.661.861.060.860.460 实验要求 利用曲线拟合的线性最小二乘法求被逼近函数f(x)在点x55处的近似值&#xff0c;并画出实验数据和直线。 代码实现 X[0,10,20,30,40,50,60,70,80,90]; Y[68,67.1,66.4,65.6,64.6,61.…

达梦数据库8安装教程

第一步&#xff1a;双击驱动 注意&#xff1a;如果双击显示没有驱动&#xff0c;则安装WinCDEmu软件。 第二步&#xff1a;双击setup.exe安装包 第三步&#xff1a;选择时区 第四步&#xff1a;验证key文件 因为我们是免费试用&#xff0c;所以没有key文件&#xff0c;直接下一…

线性回归——最小二乘法

线性回归&#xff1a;自变量和因变量之间是线性关系&#xff0c;例如&#xff1a;h a0a1x1a2x2…anxn。线性回归预测的一般步骤&#xff1a;假设特征变量Xi满足线性关系&#xff0c;然后根据给定的训练数据训练出一个模型&#xff0c;最后通过此模型进行预测。线性回归的根本就…

最小二乘法多项式曲线拟合原理与实现(数学公式详细推导,代码方面详细注释)

最小二乘法概念&#xff1a; 最小二乘法&#xff08;又称最小平方法&#xff09;是一种数学优化技术。它通过最小化误差的平方和寻找数据的最佳函数匹配。利用最小二乘法可以简便地求得未知的数据&#xff0c;并使得这些求得的数据与实际数据之间误差的平方和为最小。最小二乘…

对「曲线拟合」和「最小二乘法」的个人理解

在工程实践中&#xff0c;经常遇到类似的问题: 我们做了n次实验&#xff0c;获得了一组数据 然后&#xff0c;我们希望知道x和y之间的函数关系。所以我们将其描绘在XOY直角坐标系下&#xff0c;得到下面这么一张点云图&#xff1a; 然后&#xff0c;我们发现&#xff0c;x和y…