01
QDir 是 Qt 框架中用于处理目录和文件路径的核心类,提供跨平台的目录操作功能。
02
QFileInfo 是 Qt 框架中的一个类,用于获取文件系统中的文件和目录的详细信息。它提供了一系列方法来查询文件的属性,如文件大小、创建时间、最后修改时间、文件权限等。
03
QStandardPaths 是 Qt 框架中用于获取系统标准路径的类,它可以帮助你访问常见的系统目录(如文档、下载、配置等),跨平台兼容(Windows、Linux、macOS、Android/iOS)。
04
QPair 是 Qt 框架中的一个模板类,用于存储两个值,通常称为“键值对”或“二元组”。它类似于 C++ 标准库中的 std::pair,但专为 Qt 设计,能够更好地与 Qt 的其他类和方法集成。
05
widget.ui
06
widget.cpp
#include "widget.h"#include "ui_widget.h"#include <QDebug>#include <QDir>#include <QFileInfo>#include <QMetaEnum>#include <QStandardPaths>#include <QPair>#include <QList>Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget){ ui->setupUi(this); this->setWindowTitle(QString("Qt历险记 路径学习篇 V%1").arg(qVersion())); QList<QPair<QString, QString>> paths; paths << QPair<QString, QString>("QDir::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("F:\\Project")); // 指定一个路径 paths << QPair<QString, QString>("QDir::path()", dir.path()); // 返回输入路径,返回的路径可以是绝对路径或相对路径 paths << QPair<QString, QString>("QDir::absolutePath()", dir.absolutePath()); // 返回绝对路径(不区分是不是快捷方式/linux链接 ln) // 如果是真实路径,效果和absolutePath()相同,如果是windows快捷方式则返回空,如果是linux软硬链接则返回路径地址的实际路径 paths << QPair<QString, QString>("QDir::canonicalPath()", dir.canonicalPath()); paths << QPair<QString, QString>("QCoreApplication::applicationDirPath()", QCoreApplication::applicationDirPath()); // 返回包含应用程序可执行文件的目录 paths << QPair<QString, QString>("qApp->applicationDirPath()", qApp->applicationFilePath()); // 返回应用程序可执行文件的文件路径 paths << QPair<QString, QString>("-------->", "[2]<--------"); // Windows下创建一个文件快捷方式或linux下创建一个文件链接,将快捷方式路径写入下列QDir QFileInfo info(QDir::toNativeSeparators("F:\\Project\\新建 XLSX 工作表.xlsx")); // 如果是真实路径,效果和absolutePath()相同,如果是windows快捷方式则返回空,如果是linux软硬链接则返回路径地址的实际路径 paths << QPair<QString, QString>("QFileInfo::canonicalPath()", info.canonicalPath()); paths << QPair<QString, QString>("QFileInfo::canonicalFilePath()", info.canonicalFilePath()); paths << QPair<QString, QString>("QFileInfo::absolutePath()", info.absolutePath()); // 返回输入文件的绝对路径(不包含文件名) paths << QPair<QString, QString>("QFileInfo::absoluteFilePath()", info.absoluteFilePath()); // 返回输入文件的绝对路径 paths << QPair<QString, QString>("QFileInfo::filePath()", info.filePath()); // 返回文件名,包括路径(可以是绝对路径或相对路径) paths << QPair<QString, QString>("QFileInfo::path()", info.path()); // 返回文件的路径。这不包括文件名 paths << QPair<QString, QString>("", "--------返回给定位置类型的本地化显示名称--------"); QMetaEnum m = QMetaEnum::fromType<QStandardPaths::StandardLocation>(); for(int i=0; i < m.keyCount(); ++i) { QStandardPaths::StandardLocation location = QStandardPaths::StandardLocation(m.value(i)); // 返回给定位置类型的本地化显示名称,如果找不到相关位置,则返回空QString。 paths << QPair<QString, QString>(m.valueToKey(m.value(i)), QStandardPaths::displayName(location)); } paths << QPair<QString, QString>("", "--------返回类型文件应写入的目录--------"); for(int i=0; i < m.keyCount(); ++i) { QStandardPaths::StandardLocation location = QStandardPaths::StandardLocation(m.value(i)); // 返回类型文件应写入的目录,如果无法确定位置,则返回空字符串。 paths << QPair<QString, QString>(m.valueToKey(m.value(i)), QStandardPaths::writableLocation(location)); } for(int i = 0; i < paths.count(); i++) { ui->tableWidget->insertRow(i); //按需求加行 ui->tableWidget->setItem(i, 0, new QTableWidgetItem(paths.at(i).first)); // 插入第一列数据 ui->tableWidget->setItem(i, 1, new QTableWidgetItem(paths.at(i).second)); // 插入第二列数据 } //自适应宽度 ui->tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::ResizeToContents);}Widget::~Widget(){ delete ui;}
07
通过网盘分享的文件:Experience 文件路径大全
链接: https://pan.baidu.com/s/1HJLhBpwunPBIpDcUOYSzzw?pwd=fpwp 提取码: fpwp
08
还想知道Qt的那些技能!!!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。