Qt QDir用法及实战案例

QDir简介

QDir类用来操作路径名,获取关于目录路径及文件的相关信息

实战案例

这次遇到了Qt项目,其中有一项是访问指定的目录,并获取特定的文件格式,将获取到的文件名打印到显示屏上,并可以去操作这些文件。

1.添加头文件
#include

2.路径宏定义
#define TargetPath “/home/targetDir”
#define SourcePath “/home/sourceDir”
3.创建对象
QDir dir(TargetPath);
if(!dir.exists()){
qDebug()<<“目录不存在”;
}
4.指定条件去获取 entryList()获取所有条目的名称
QStringList fileList;
fileList=dir.entryList(QDir::Files|QDir::NoDotAndDotDot);//列出文件忽略.和…
qDebug()<<fileList;

5.在QtableWidget控件上显示,并且利用了数据库进行归纳

/*************************************************
Function: fileListFind// 函数名称
Description: 遍历目的路径并插入到数据库函数// 函数功能、性能等的描述
Input: 无// 输入参数说明,包括每个参数的作用、取值说明及参数间关系。
Return: 无// 函数返回值的说明
*************************************************/
void Sqloperate::fileListFind()
{
    QDir targetDir(TargetPath);
    if(!targetDir.exists()){
           qDebug()<<"TargetPath目录不存在";
           return;
     }
    QDir sourceDir(SourcePath);
    if(!sourceDir.exists()){
           qDebug()<<"sourceDir目录不存在";
           return;
     }
    //指定条件去获取 entryList()获取所有条目的名称
    QStringList  targetFileList;
    targetFileList=targetDir.entryList(QDir::Files|QDir::NoDotAndDotDot);//列出文件忽略.和..
    qDebug()<<targetFileList;
    QStringList  sourceFileList;
    sourceFileList=sourceDir.entryList(QDir::Files|QDir::NoDotAndDotDot);//列出文件忽略.和..
    qDebug()<<sourceFileList;
    QSqlQuery query;
    if(!query.exec(ClearFileTable)){
        qDebug()<<query.lastError();
        return;
    }
    for(int i=0;i<targetFileList.size();i++){
        QString fileCommand = QString("insert into filetable(SerialNumber,FileName,FileLoad)values(NULL,'%1','%2')").arg(targetFileList.at(i)).arg(QObject::tr("是"));
        qDebug()<<fileCommand;
        if(!query.exec(fileCommand)){
            qDebug()<<query.lastError();
            return ;
        }
    }
    for(int i=0;i<sourceFileList.size();i++){
        QString fileCommand = QString("insert into filetable(SerialNumber,FileName,FileLoad)values(NULL,'%1','%2')").arg(sourceFileList.at(i)).arg(QObject::tr("否"));
        qDebug()<<fileCommand;
        if(!query.exec(fileCommand)){
            qDebug()<<query.lastError();
            return ;
        }
    }
}

将数据库中的数据内容加载到tableWidget控件中

/*************************************************
Function: sqlLoadData()
Description: 从sqlite获取内容,解析更新到tablewidget中
Input:QTableWidget *tableObject ->list对象
      int columns   ->表的列数
      QString tableName -> sql表名
Output:
Return:
*************************************************/
void Widget::sqlLoadData(QTableWidget *tableObject,int columns,QString tableName)
{
     QSqlQuery strQuery(db);
     QString strSql;   
     strSql = QString("select * from %1").arg(tableName);
     strQuery.exec(strSql);
     for(int i = 0; strQuery.next(); i++){
                for(int j = 0; j < columns; j++){
                        tableObject->setItem(i,j, new QTableWidgetItem(strQuery.value(j).toString()));
                        tableObject->item(i,j)->setTextAlignment(Qt::AlignHCenter|Qt::AlignVCenter);
                }
     }
     tableObject->resizeRowsToContents();
}

效果如下图所示:
在这里插入图片描述

enum QDir::Filter中常用的枚举变量值及其含义如下
QDir::Dirs 0x001 列出目录;
QDir::AllDirs 0x400 列出所有目录,不对目录名进行过滤;
QDir::Files 0x002 列出文件;
QDir::Drives0x004 列出逻辑驱动器名称,该枚举变量在Linux/Unix中将被忽略;
QDir::NoSymLinks 0x008 不列出符号链接;
QDir::NoDotAndDotDot 0x1000 不列出文件系统中的特殊文件.及…;
QDir::NoDot 0x2000 不列出.文件,即指向当前目录的软链接
QDir::NoDotDot0x4000 不列出…文件;
QDir::AllEntries 其值为Dirs | Files | Drives,列出目录、文件、驱动器及软链接等所有文件;
QDir::Readable 0x010 列出当前应用有读权限的文件或目录;
QDir::Writable 0x020 列出当前应用有写权限的文件或目录;

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赟赟、嵌入式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值