QDir Qt中对目录遍历的支持是比较好的,比如QDir、QFileInfo、QFile等。 在Qt助手中可以查到有关QDir的用法,如下图所示: ? 下面是我本人测试的一些关于QDir类的测试代码: #include <QCoreApplication> #include <QDir> #include <QFileInfo> #include <QDebug "the directory of application's executable" << QCoreApplication::applicationDirPath() << endl; QDir << endl; } else { qDebug() << mPath << " Already exists" << endl; } QDir dDir dir; dir.setFilter(QDir::Files | QDir::Hidden | QDir::NoSymLinks); dir.setSorting(QDir::
01 QDir 是 Qt 框架中用于处理目录和文件路径的核心类,提供跨平台的目录操作功能。02 QFileInfo 是 Qt 框架中的一个类,用于获取文件系统中的文件和目录的详细信息。 ::currentPath()", QDir::currentPath()); // 返回应用程序当前目录的绝对路径 paths << QPair<QString, QString>("QDir ::homePath()", QDir::homePath()); // 返回用户主目录的绝对路径 paths << QPair<QString, QString>("QDir: :rootPath()", QDir::rootPath()); // 返回根目录的绝对路径 paths << QPair<QString, QString>("------- ->", "[1]<--------"); // Windows下创建一个文件夹快捷方式或linux下创建一个文件夹链接,将快捷方式路径写入下列QDir QDir dir(QDir::toNativeSeparators
2.1 创建和删除目录#include <QDir>#include <QDebug>int main() { QDir dir("newDir"); // 创建目录 if (! QFileInfoList fileList = dir.entryInfoList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files); "; } QDir dirList("."); QFileInfoList fileList = dirList.entryInfoList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files); for (QFileInfo file : fileList) { qDebug() << file.absoluteFilePath QDir类为我们提供了丰富的目录管理功能,包括列出目录中的文件和子目录、创建新目录、删除目录及其内容等。
); // 如果添加路径是一个目录,保存当前内容列表 QFileInfo file(path); if (file.isDir()) { const QDir dirw(path); m_pInstance->m_currentContentsMap[path] = dirw.entryList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir::Files, QDir::DirsFirst); } } // 只要任何监控的目录更新(添加、删除、重命名),就会调用。 dir(path); QStringList newEntryList = dir.entryList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir ::Files, QDir::DirsFirst); QSet<QString> newDirSet = QSet<QString>::fromList(newEntryList);
目录 QT中提供了目录操作类QDir,QDir功能如下: 目录分隔符统一使用’/’ 能够对目录进行任意操作(创建、删除、重命名) 能够获取指定目录中的所有条目(文件和文件夹) 能够使用过滤字符串获取指定条目 能够获取系统中的所有根目录 QDir使用方法如下: QDir dir; QString path = ("C:/Users/Administrator/Desktop/QDir"); if(! ::NoDotAndDotDot|QDir::AllEntries); // QDir::NoDotAndDotDot:不要出现.和..两个条目, QDir::AllEntries:所有(文件 dir(PATH); QFileInfoList files = dir.entryInfoList(QDir::NoDotAndDotDot|QDir::AllEntries); "); //监视QDir目录 watcher.addPath("C:/Users/Administrator/Desktop/text.txt"); //监视text.txt文件
❞ 创建需要遍历目录的QDir。 QDir fileDir("C:/Users/Strong/Documents"); 设置过滤配置,只匹配文件。 fileDir.setFilter(QDir::Files); 返回目录中所有文件和目录的QFileInfo对象列表并遍历。 完整代码 #include <QApplication> #include <QFileInfo> #include <QDateTime> #include <QDebug> #include <QDir > int main(int argc, char *argv[]) { QApplication a(argc, argv); /* 创建需要遍历目录的QDir */ QDir fileDir("C:/Users/Strong/Documents"); /* 设置过滤配置,只匹配文件 */ fileDir.setFilter(QDir::Files);
/转\(斜杠转反斜杠) 使用QDir::toNativeSeparators接口 示例: QString path = "C:/temp/test.txt"; path = QDir::toNativeSeparators (path); 输出 "C:\\temp\\test.txt" \转/(反斜杠转斜杠) 使用QDir::fromNativeSeparators 示例: QString path = "C:\\temp \\test.txt"; path = QDir::toNativeSeparators(path); 输出 C:/temp/test.txt
QDir可以用于对文件夹进行操作。 操作符将字符串流入文本文件: 三、文件信息读取 除了对文件的读写操作,Qt还封装了QFileInfo类帮助我们获取文件的元数据,比如文件大小、后缀名、创建时间、最后修改时间等等: 四、文件夹的操作 QDir 首先我们可以用QDir表示绝对路径,比如: QDir("/home/user/Documents") QDir("C:/Documents and Settings") 也可以表示相对路径 ,比如: QDir("images/landscape.png") 我们可以用IsRelative()和IsAbsolute()方法来检验某个QDir对象使用的是绝对路径还是相对路径。 五、文件夹的操作 Qt对文件和文件夹的操作封装了很多类,比如对文件操作可以使用QFile,文本文件的读写可以使用QTextStream,读取文件元数据可以使用QFileInfo,文件夹的操作可以使用QDir
include <QListWidgetItem> #include <QMessageBox> #include <QStringList> #include <QtDebug> #include <QDir MainWindow::showDirSlot(){ //QStringList fileNames = QFileDialog::getOpenFileNames(this,"Open File",QDir ::currentPath()); QDir dir = QDir::current(); QStringList fileNames = dir.entryList(); if
1.解决方法 1.1 使用QDir::mkdir创建目录 这里需要注意的是它只能创建一个子目录,如果路径存在多个不存在目录则会创建失败。 1.2 使用QDir::mkpath创建目录 这个接口功能更强大,QDir::mkpath能创建该目录所需的所有父目录。它解决QDir::mkdir只能创建一个子目录的情况。
mp_fileSystemModel = new QFileSystemModel; mp_fileSystemModel->setRootPath(QDir::currentPath());、 void >tableView->setModel(mp_fileSystemModel); ui->tableView->setRootIndex(mp_fileSystemModel->index(QDir QDirModel; //可编辑 mp_dirModel->setReadOnly(false); //初始排序属性 mp_dirModel->setSorting(QDir ::DirsFirst | QDir::IgnoreCase | QDir::Name); mp_treeView = new QTreeView(this); mp_treeView ->setModel(mp_dirModel); mp_treeView->setRootIndex(mp_dirModel->index(QDir::currentPath()));
Qt 设置存储路径 #include <QDir> QDir currentDir = QDir::current(); currentDir.cd(".."); currentDir.cd("ThreadClientSendPicture
FILEBROWER_H #include <QtGui/QWidget> #include "ui_FileBrower.h" ///图标 #include <QIcon> ///目录 #include <QDir 比如在有的博客里会这样去连接 connect(ui.lineEdit, SIGNAL(returnPressed()), this, SLOT(showCurrentDirFiles(QDir))); QStringList fileList; fileList<<"*"; QFileInfoList infoList = currentDir.entryInfoList(fileList,QDir ::AllEntries,QDir::DirsFirst); //在QListWidget里显示文件列表 this->showFileInfoList(infoList); } 这里要说明一下QDir 查官方文档,该方法有三个参数: QFileInfoList QDir::entryInfoList ( const QStringList & nameFilters, Filters filters
dirw(path); m_pInstance->m_currentContentsMap[path] = dirw.entryList(QDir::NoDotAndDotDot | QDir ::AllDirs | QDir::Files, QDir::DirsFirst); }}接着是FileSystemWatcher::directoryUpdated函数的实现部分,如下所示代码, path); // 比较最新的内容和保存的内容找出区别(变化) QStringList currEntryList = m_currentContentsMap[path]; const QDir dir(path); QStringList newEntryList = dir.entryList(QDir::NoDotAndDotDot | QDir::AllDirs | QDir: :Files, QDir::DirsFirst); QSet<QString> newDirSet = QSet<QString>::fromList(newEntryList); QSet
getExistingDirectory(this,"选择目录","~/",QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks); QDir getExistingDirectory(this,"选择删除的目录","~/",QFileDialog::ShowDirsOnly| QFileDialog::DontResolveSymlinks); QDir dir(dir_name); //得到目录下的所有文件 QStringList infolist = dir.entryList(QDir::Files,QDir::Time);
master_log_file='mysql-bin.000025', master_log_pos=1010663436; 6、错误提示如下 Error 'Unknown column 'qdir subject_pid, createtime, approve, did, status, intime, order_d, endtime,banzhu_uid,banzhu_uname,del_cause,qdir subject_pid, createtime, approve, did, status, intime, order_d, endtime,'1521859','admin0523','无意义回复',qdir from club.question where id=7330212' 1 row in set (0.00 sec) 这个错误就说club.question_del 表里面没有qdir这个字段 在主的mysql : 里面查询 Desc club.question_del; 在 错误的从服务器上执行 : alter table question_del add qdir varchar(30)
m_fileModel.setNameFilters(filters); //设置显示的文件后缀 m_fileModel.setFilter(QDir 之后百度到了QDir有过滤文件的功能,但是我想用QListView显示,那QListView有没有这个功能呢?试下一下,发现有,太好了。。嘟嘟嘟。。 m_fileModel.setNameFilterDisables(false); //默认是失能m_fileModel.setNameFilters(filters); //设置显示的文件后缀m_fileModel.setFilter(QDir
//create Model mp_fileSystemModel = new QFileSystemModel; mp_fileSystemModel->setRootPath(QDir::currentPath >tableView->setModel(mp_fileSystemModel); ui->tableView->setRootIndex(mp_fileSystemModel->index(QDir QDirModel; //可编辑 mp_dirModel->setReadOnly(false); //初始排序属性 mp_dirModel->setSorting(QDir ::DirsFirst | QDir::IgnoreCase | QDir::Name); //create View and bind mp_treeView = new QTreeView(this); mp_treeView->setModel(mp_dirModel); mp_treeView->setRootIndex(mp_dirModel->index(QDir
QDir类管理目录和文件名列表。 Qt使用Unicode文件名。 /qdir.cpp、qwerty/qwerty.cpp和xml/outliner/outlinetree.cpp。 /qdir.cpp、qwerty/qwerty.cpp和xml/outliner/outlinetree.cpp。 实例: QFile f; QDir::setCurrent( "/tmp" ); f.setName( "readme.txt" ); QDir::setCurrent 也可以参卡name()、QFileInfo和QDir。 Offset QFile::size () const [虚] 返回文件大小。 也可以参考at()。
} templatePath = info.absoluteFilePath(); //获取模板的绝地路径 templatePath = QDir ::toNativeSeparators(templatePath); //转换一下路径,让windows能够识别 QString ExcelFile = QDir::toNativeSeparators querySubObject("WorkBooks"); QAxObject* workbook = workbooks->querySubObject("Open(const QString&)",QDir