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 列出当前应用有写权限的文件或目录;