63-目录操作(QDir类)及展示系统文件实战

news2024/11/16 21:33:08

一、目录操作(QDir 类)

#include <QCoreApplication>

#include <QDir>
#include <QStringList>
#include <QtDebug>

// 自定义函数实现获取目录下大小

qint64 GetDirFileInfoSizeFunc(const QString &qpath)
{
    // QDir类专门用来操作路径名称或底层文件系统,可以使用相对或绝对路径来指向一个文件/目录
    QDir qdirs(qpath);

    qint64 qsize=0; // 存放目录占据空间

    // QFileInfor类提供有关文件系统当中文件名称、路径(位置)、访问权限、文件类型等等信息
    // entryInfoList函数获取过滤之后获得的文件名夹下面的文件信息列表
    foreach(QFileInfo finfo,qdirs.entryInfoList(QDir::Files))
    {
        qsize=qsize+finfo.size();
    }

    // QDir::Dirs列出目录。QDir::separator()不列出文件系统当中的特殊文件
    foreach(QString sDir,qdirs.entryList(QDir::Dirs|QDir::NoDotAndDotDot))
    {
        qsize=qsize+GetDirFileInfoSizeFunc(qpath+QDir::separator()+sDir);
    }

    char uint='B';

    qint64 currentdirsize=qsize;

    if(currentdirsize>1024)
    {
        currentdirsize=currentdirsize/1024;
        uint='K';

        if(currentdirsize>1024)
        {
            currentdirsize=currentdirsize/1024;
            uint='M';
            if(currentdirsize>1024)
            {
                currentdirsize=currentdirsize/1024;
                uint='G';
                if(currentdirsize>1024)
                {
                    currentdirsize=currentdirsize/1024;
                    uint='T';
                }
            }
        }
    }

    qDebug()<<"目录占据空间为:"<<currentdirsize<<"\t"<<qPrintable(qpath);


    return qsize;
}
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    // 该字符串存储路径
    QString strPath;

    strPath=QDir::currentPath(); // 获取当前目录
    qDebug()<<"当前目录为:"<<strPath<<Qt::endl;

    // 调用此函数求目录占据空间的大小
    GetDirFileInfoSizeFunc(strPath);
    

    return a.exec();
}

 二、QDir 类综合应用展示系统文件实战操作

#ifndef QDIRFILEVIEWS_H
#define QDIRFILEVIEWS_H

#include <QDialog>
#include <QDialog>

#include <QListWidget>  // 列表框
#include <QListWidgetItem>
#include <QLineEdit> // 单行输入框/单行编辑框

#include <QDir> // 获取操作路径及底层文件系统
#include <QFileInfoList> // 获取指定目录的基本数据信息

#include <QVBoxLayout> // 垂直布局

#include <QStringList>


class QDirFileViews : public QDialog
{
    Q_OBJECT

public:
    QDirFileViews(QWidget *parent = nullptr);
    ~QDirFileViews();
private:
    QLineEdit * filelineedit;//显示所选择目录的名称
    QListWidget * filelistwidget;//列表框,展示目录和文件
    QVBoxLayout *glayout; // 垂直布局
public:
    void dispfileinfolist(QFileInfoList list); // 显示目录和文件所对应图标

private slots:
    void dispdir(QDir dir);
    void dispdirshow(QListWidgetItem *item);
};
#endif // QDIRFILEVIEWS_H




//.c
#include "qdirfileviews.h"

QDirFileViews::QDirFileViews(QWidget *parent)
    : QDialog(parent)
{
    resize(500,350);

    setWindowTitle("QDir类综合控件应用测试");


    filelineedit=new QLineEdit("/");
    filelistwidget=new QListWidget;

    glayout=new QVBoxLayout(this);
    glayout->addWidget(filelineedit);
    glayout->addWidget(filelistwidget);

    QString root = "/";
    QDir rootDir(root);
    QStringList strlist;
    strlist<<"*";

    // entryInfoList函数获取过滤之后获得的文件名夹下面的文件信息列表
    QFileInfoList list = rootDir.entryInfoList(strlist);

    // 信号与槽函数连接
    connect(filelineedit,SIGNAL(returnPressed()),this,SLOT(dispdir(QDir)));

    connect(filelistwidget,SIGNAL(itemDoubleClicked(QListWidgetItem*)),
            this,SLOT(dispdirshow(QListWidgetItem*)));

    // 调用此函数来显示
    dispfileinfolist(list);

}

QDirFileViews::~QDirFileViews()
{
}
// 显示目录和文件所对应图标
void QDirFileViews::dispfileinfolist(QFileInfoList list)
{
    filelistwidget->clear();
    for (unsigned int i=0;i<list.count();i++)
    {
        QFileInfo tempfileinfo=list.at(i);
        if(tempfileinfo.isDir())//判断是目录
        {
            //相对路径里常使用 “../” 来表示上一级目录
            QIcon ico("../QDirFileViewProssss/dir.jpg");
            QString filename = tempfileinfo.fileName();
            QListWidgetItem *temp = new QListWidgetItem(ico,filename);
            filelistwidget->addItem(temp);
        }
        else if(tempfileinfo.isFile())//判断是文件
        {
             QIcon ico(":/QDirFileViewProssss/file.jpg");
            QString filename=tempfileinfo.fileName();
            QListWidgetItem *temp=new QListWidgetItem(ico,filename);
            filelistwidget->addItem(temp);
        }

    }



}

void QDirFileViews::dispdir(QDir dir)
{
    QStringList strlist;
    strlist<<"*";

    QFileInfoList fileinfolist=dir.entryInfoList(strlist,QDir::AllEntries,QDir::DirsFirst);


    dispfileinfolist(fileinfolist);
}

void QDirFileViews::dispdirshow(QListWidgetItem *item)
{

    QDir dir;
    QString str=item->text();

    dir.setPath(filelineedit->text());
    dir.cd(str);

    filelineedit->setText(dir.absolutePath());

    dispdir(dir);
}

 

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

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

相关文章

springboot三层架构与MVC,以及三层架构入门

三层架构与MVC 1. 三层架构是什么 把各个功能模块划分为表示层&#xff0c;业务逻辑层&#xff0c;和数据访问层三层架构&#xff0c;各层之间采用接口相互访问&#xff0c;并通过对象模型的实体类&#xff08;model&#xff09;作为数据传递的载体&#xff0c;不同的对象模型…

任务倒计时App

设计背景 在某一阶段可能需要给自己设置长期任务&#xff0c;比如找工作、考研等&#xff0c;需要一个单纯的任务计时工具&#xff0c;设置完任务的目标时间后&#xff0c;每次打开App时都能直接看到最新的剩余时间 设计步骤 1. 写java源码 由于需要界面显示&#xff0c;需…

pycharm下载和配置Anaconda环境

文章目录 一、 pycharm安装二、 安装 一、 pycharm安装 官网下载&#xff1a; https://www.jetbrains.com/pycharm/download/#sectionwindows Pycharm community Edition是免费的 二、 安装 安装目录有需要的可以自己更改。 三、创建项目 打开pycharm->继续->不发送。…

【UE数字孪生学习笔记】 虚幻日志系统

声明&#xff1a;部分内容来自于b站&#xff0c;知乎&#xff0c;慕课&#xff0c;公开课等的课件&#xff0c;仅供学习使用。如有问题&#xff0c;请联系删除。 部分内容来自UE官方文档&#xff0c;博客等 虚幻日志系统 1. 日志是一种非常实用的调试工具&#xff0c;可以详细…

AI赋能银行国际结算审单:合合信息抽取技术的实践与应用

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 时下&#xff0c;银行国际业务是金融体系的重要组成部分&#xff0c;涵盖了外汇交易、国际结算、贸易融资、跨境投资等领域&#xff0c;这些业务对于国际贸易和全球经济发展具有重要作用。国际业务部门单据、凭证…

renren-fast-vue在mac上的运行

被这个折磨好久了&#xff0c;终于成功了。。 版本号-node-14 需要提前执行的命令&#xff0c;希望可以帮助到大家。分别是解决版本在mac m1架构上的不兼容问题&#xff0c;另外解决没有验证码的问题&#xff0c;要注意数据库的配置&#xff0c;账号密码是否正确。 npm inst…

C语言中指针的说明

什么是指针&#xff1f; 在C语言当中&#xff0c;我们可以将指针理解为内存当中存储的地址&#xff0c;就像生活当中&#xff0c;一个小区里面&#xff0c;在小区里面有很单元&#xff0c;每一栋单元&#xff0c;单元内的房间有着不同的房间号&#xff0c;我们可以同过几栋几单…

JAVA开发 PDF文件生成表格,表格根据内容自动调整高度

1、展示效果 2、相关功能实现 JAVA开发 使用Apache PDFBox库生成PDF文件&#xff0c;绘制表格 3、实现代码 import org.apache.pdfbox.pdmodel.PDDocument; import org.apache.pdfbox.pdmodel.PDPage; import org.apache.pdfbox.pdmodel.PDPageContentStream; import org.ap…

Nginx+Tomcat负载均衡、动静分离原理

目录 一.Nginx负载均衡 1.负载均衡概念 2.负载均衡原理 3.Nginx反向代理 3.1.反向代理概念 3.2.Nginx实现负载均衡的主要配置项 二.Nginx动静分离 1.什么是动静分离 2.动态页面与静态页面区别 3.动静分离原理 三.NginxTomcat负载均衡的实验设计 1.部署nginx负载均衡…

周二A股走势分化,半导体板块逆势上涨,有色、航运等周期股下跌,贵州茅台跌3%

内容提要 午后创业板翻红&#xff0c;科创50大涨2.4%&#xff0c;半导体板块逆势上扬&#xff0c;中芯国际涨超3% 。 贵金属、航运板块跌幅居前&#xff0c;中远海控跌停。港股黄金、航运及地产板块也走弱&#xff0c;招金矿业跌超10%&#xff0c;中远海控大跌12%。 周二股市行…

品牌具象化:从经济到市场的深度解析

在当今日益激烈的市场竞争中&#xff0c;无论是传统行业还是电商行业&#xff0c;都面临着前所未有的挑战与机遇。越来越多的企业家开始意识到&#xff0c;单纯的产品竞争已经难以支撑企业的长远发展&#xff0c;而品牌的力量正逐渐凸显其重要性之一。本文将深入探讨品牌具象化…

HCIE认证,这些误区要避开

追求HCIE认证是许多网络工程师提升职业水平的选择之一。 然而&#xff0c;在这条备考之路上&#xff0c;存在不少误解可能会误导你的学习方向或影响你的备考效率。 了解并避开这些常见误区&#xff0c;将帮助你更有效地准备HCIE认证考试。 01 误区一&#xff1a;过分依赖题库 …

数据通信中的同步方式

同步指的是什么呢&#xff1f; 百度百科&#xff1a; 同步指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。 本意是指某人或某事同时进行&#xff1b;同时产生&#xff0c;比如音画同步、动作同步等。 同步&#xff08;英语&#xff1a;Synchronization&am…

第二十七章HTML.CSS综合案例(三)

5.小米侧边栏 效果如下&#xff1a; 代码图如下&#xff1a; <style>*{margin: 0;padding: 0;}ul{list-style: none;}a{text-decoration: none;}.box{width: 100%;height: 100%;position: absolute;background-image: linear-gradient(to right, #a07ad0, #c39340);}.…

喜讯 | 爱洁丽攸信技术uMOM制造运营系统项目启动会圆满成功!

2024年6月4日&#xff0c;厦门攸信信息技术有限公司&#xff08;以下简称“攸信技术”&#xff09;与福建爱洁丽日化有限公司&#xff08;以下简称“爱洁丽”&#xff09;uMOM制造运营系统项目启动会圆满成功 01合作客户介绍 Introduction of cooperative customers 福建爱洁…

问题:一般在管理工作复杂、面广且管理分工比较细致的单位,常采用()组织形式。 #媒体#媒体

问题&#xff1a;一般在管理工作复杂、面广且管理分工比较细致的单位&#xff0c;常采用()组织形式。 A&#xff0e;直线式 B&#xff0e;职能式 C&#xff0e;矩阵式 D&#xff0e;团队式 参考答案如图所示

使用MySQL

自学python如何成为大佬(目录):https://blog.csdn.net/weixin_67859959/article/details/139049996?spm1001.2014.3001.5501 1 下载安装MySQL MySQL是一款开源的数据库软件&#xff0c;由于其免费特性得到了全世界用户的喜爱&#xff0c;是目前使用人数最多的数据库。下面将…

v-for循环出来的图片如何替换图片路径

滑过改变图片的路径 <div v-for"(item,index) in serverlist2" :key"index" class"serverlistitem serverlistitem2" mouseover"item.hover true"mouseleave"item.hover false"><div><img:src"item.…

论文阅读U-KAN Makes Strong Backbone for MedicalImage Segmentation and Generation

作为一种非常有潜力的代替MLP的模型&#xff0c;KAN最终获得了学术界极大的关注。在我昨天的博客里&#xff0c;解读了最近的热门模型KAN&#xff1a; 论文阅读KAN: Kolmogorov–Arnold Networks-CSDN博客 KAN的原文作者提到了很多不足。本文算是对其中两个现有不足的回应&am…