前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >Qt | 目录和文件路径常用函数大全

Qt | 目录和文件路径常用函数大全

原创
作者头像
Qt历险记
发布2025-03-04 20:15:21
发布2025-03-04 20:15:21
8400
代码可运行
举报
文章被收录于专栏:Qt6 研发工程师Qt6 研发工程师
运行总次数:0
代码可运行

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

代码语言:javascript
代码运行次数:0
复制
widget.cpp
代码语言:javascript
代码运行次数:0
复制
#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 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档