Qt 获取系统目录(QStandardPaths类)详解 - 详解

news/2025/12/10 23:00:56/文章来源:https://www.cnblogs.com/yangykaifa/p/19324514

Qt 获取系统目录(QStandardPaths类)详解

  • 一、QStandardPaths类详解
    • 1、 核心功能与用途
    • 2、 关键静态方法
    • 3、 重要的 StandardLocation 枚举值
    • 4、 注意事项
  • 二、示例
    • 1、效果展示
    • 2、源码分享

一、QStandardPaths类详解

QStandardPaths 类是 Qt 提供的一个实用工具类,给出一种跨平台的方式来获取架构定义的标准目录路径就是其核心功能。不同的操作系统(如 Windows, macOS, Linux)对用户目录(如文档、下载、音乐等)、系统目录(如应用程序位置、临时文件目录)有不同的约定和存储位置。QStandardPaths 抽象了这些差异,让开发者能够以统一的方式访问这些路径,无需为每个平台编写特定的路径查找代码。

1、 核心功能与用途

  1. 获取标准目录位置:

  2. 查找文件或目录:

  3. 指定写位置:

  4. 显示名称:

2、 关键静态方法

  • static QStringList standardLocations(StandardLocation type)

    • 功能:获取指定类型标准位置的所有可能路径列表。
    • 参数:type - 一个 QStandardPaths::StandardLocation 枚举值,指定要查询的位置类型。
    • 返回值: 一个 QStringList,包含该类型的所有有效路径。列表通常是有序的,第一个元素 (first()) 是最适合写入的位置(如果可写),后续元素可能是只读的系统级位置。如果找不到任何位置,返回空列表。
    • 用途:当你想查找文件时,可以遍历这些路径。或者当首选位置不可用时,尝试备用位置。
  • static QString writableLocation(StandardLocation type)

    • 功能:可写的)路径。就是获取指定类型标准位置的首选(通常
    • 参数:type - 一个 QStandardPaths::StandardLocation 枚举值。
    • 返回值: 一个 QString,表示该位置的可写路径。如果该类型没有可写位置或无法确定,返回空字符串。
    • 用途:最常用的方法,用于获取存储应用程序数据、配置、缓存等的目录。就是这
  • static QString findExecutable(const QString &executableName, const QStringList &paths = QStringList())

    • 功能:在架构的可执行文件搜索路径中查找指定的可执行文件。
    • 参数:
      • executableName - 要查找的可执行文件名(如 "gcc", "notepad")。在 Windows 上,通常会尝试添加 .exe 后缀。
      • paths - 可选参数,指定额外的搜索路径列表。如果为空,则使用系统的 PATH 环境变量。
    • 返回值:如果找到,返回文档的绝对路径;否则返回空字符串。
    • 用途:检查某个命令行工具是否可用,或者启动外部应用时确定其路径。
  • static QString locate(StandardLocation type, const QString &fileName, LocateOptions options = LocateFile)

  • static QStringList locateAll(StandardLocation type, const QString &fileName, LocateOptions options = LocateFile)

    • 功能:在指定类型标准位置的所有路径中查找文件或目录。
    • 参数:
      • type - 要搜索的标准位置类型。
      • fileName - 要查找的文件名或相对路径。
      • options - 查找选项 (LocateFile 查找文件, LocateDirectory 查找目录)。
    • 返回值:
      • locate: 返回第一个匹配项的绝对路径,找不到则返回空字符串。
      • locateAll: 返回所有匹配项的绝对路径列表。
    • 用途:在应用程序的素材目录中查找资源文件、配置文件等。
  • static QString displayName(StandardLocation type)

    • 功能:获取指定标准位置的本地化、用户友好的显示名称(如 “Documents”, “Downloads”)。
    • 参数:type - 标准位置类型。
    • 返回值:显示名称字符串。
    • 用途:在用户界面中显示目录名称。

3、 重要的 StandardLocation 枚举值

枚举值描述
DesktopLocation用户桌面目录
DocumentsLocation用户文档目录
FontsLocation系统字体目录
ApplicationsLocation应用程序安装目录(平台依赖)
MusicLocation用户音乐目录
MoviesLocation用户视频目录
PicturesLocation用户图片目录
TempLocation系统临时目录
HomeLocation用户主目录
AppLocalDataLocation应用本地数据目录(可写)
CacheLocation缓存目录(可写)
GenericDataLocation共享数据目录(只读)
RuntimeLocation运行时通信目录(如 XDG_RUNTIME_DIR)
ConfigLocation用户配置目录
DownloadLocation用户下载目录
GenericCacheLocation共享缓存目录
GenericConfigLocation共享设置目录
AppDataLocation应用材料目录(可写,含应用名)
AppConfigLocation应用配置目录(可写,含应用名)
PublicShareLocation公共共享目录(如 Public 文件夹)
TemplatesLocation模板目录

说明

4、 注意事项

  1. 路径存在性:writableLocation 返回的路径不一定已经存在。在写入文件前,通常需要先检查并创建目录(使用 QDir().mkpath(path))。
  2. 返回值检查: 总是检查 writableLocation, findExecutable, locate 等方法的返回值是否为空字符串,以处理路径不存在或找不到文件的情况。
  3. 平台差异: 虽然 QStandardPaths 抽象了大部分差异,但某些路径类型的行为在不同平台上可能仍有细微差别(如 AppDataLocation 在 Windows 上是否漫游)。查阅 Qt 文档了解具体细节。
  4. 自定义位置:QStandardPaths 专注于系统定义的标准位置。如果你需要应用程序特定的子目录,通常需要在返回的标准路径后面追加你自己的目录名(如 dataPath + "/myapp/cache")。
  5. Qt6 变化: 相较于 Qt5,Qt6 中的 QStandardPaths 没有重大变化,但使用最新的 Qt6 API 总是推荐的。

总结:
QStandardPaths 是 Qt 开发中处理文件和目录路径不可或缺的工具,特别是在开发跨平台应用程序时。它极大地简化了访问系统标准目录的过程,避免了硬编码路径带来的兼容性问题。熟练掌握其常用方法 (writableLocation, standardLocations, findExecutable) 和关键枚举值 (AppDataLocation, DocumentsLocation 等) 对于编写健壮、跨平台的 Qt 应用至关重要。

二、示例

1、效果展示

在这里插入图片描述

2、源码分享

#include "mainwindow.h"
#include "ui_mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_pushButton_clicked()
{
QString path;
path.append("桌面:");
path.append(QStandardPaths::standardLocations(QStandardPaths::DesktopLocation)[0]+"\r\n");
path.append("文档:");
path.append(QStandardPaths::standardLocations(QStandardPaths::DocumentsLocation)[0]+"\r\n");
path.append("字体:");
path.append(QStandardPaths::standardLocations(QStandardPaths::FontsLocation)[0]+"\r\n");
path.append("音乐:");
path.append(QStandardPaths::standardLocations(QStandardPaths::MusicLocation)[0]+"\r\n");
path.append("视频:");
path.append(QStandardPaths::standardLocations(QStandardPaths::MoviesLocation)[0]+"\r\n");
this->ui->label->setText(path);
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/994100.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【GitHub热门项目】(2025-11-12) - 详解

【GitHub热门项目】(2025-11-12) - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "…

2025年质量好的防汛工程抢险车厂家最新推荐权威榜

2025年质量好的防汛工程抢险车厂家推荐权威榜 行业背景与市场趋势 随着全球气候变化加剧,极端天气事件频发,防汛抢险装备的需求持续增长。据应急管理部统计,2024年全国防汛抢险车辆采购规模同比增长18%,其中智能…

2025年热门的应急抢险车/抢险车热门实力厂商榜(高人气)

2025年热门的应急抢险车/抢险车热门实力厂商榜(高人气)行业背景与市场趋势近年来,随着全球气候变化加剧和自然灾害频发,应急抢险行业迎来了前所未有的发展机遇。据国际应急管理协会统计,2024年全球应急装备市场规…

Linux SR-IOV

Linux SR-IOVSR-IOV即SingleRootI/OVirtualization,是硬件辅助虚拟化标准,通过物理网卡(PF)虚拟出多个虚拟网卡(VF)来使虚拟机或者容器直接访问硬件资源。其中,PF转VF是需要硬件支持的。 具体步骤PF转VF:通过P…

寻找有实力的宁波喷塑加工工厂?2025年推荐

摘要 宁波喷塑加工行业在2025年持续发展,随着制造业升级和环保要求提升,喷塑技术因其高效、环保的特点广泛应用于机械设备、五金配件等领域。本文提供一份推荐榜单,排名不分先后,旨在为有需求的用户提供参考。榜单…

2025年数控折弯机模具选型参考

近年来,数控折弯机模具市场呈现出价格温和波动、区域差异显著的格局。据行业监测数据显示,2024年全年,主流折弯机上下模产品价格整体上涨约5.8%,其中核心原材料——高碳工具钢与合金结构钢的成本变动对终端售价影响…

2025年热门的乳猪奶粉饲料/乳猪饲料用户好评榜

2025年热门的乳猪奶粉饲料/乳猪饲料用户好评榜行业背景与市场趋势近年来,随着我国生猪养殖业向规模化、集约化方向发展,乳猪饲料市场迎来了快速增长期。据行业数据显示,2024年中国乳猪饲料市场规模已突破300亿元,预…

2025年靠谱的乳猪奶粉饲料热门产品榜

2025年靠谱的乳猪奶粉饲料热门产品榜:专业推荐与采购指南 行业背景与市场趋势 近年来,随着生猪养殖业规模化、集约化程度提升,乳猪奶粉饲料作为幼龄动物营养的关键环节,市场需求持续增长。据行业数据显示,2024…

2025年中国五大钻机截齿头加工厂家排名:矿山机截齿头定制厂

本榜单依托硬质合金采掘工具领域全维度市场调研与矿山企业真实采购口碑,深度筛选出十家技术标杆企业,重点围绕截齿头的耐磨性能、抗冲击强度、工况适配性三大核心指标,为矿山、隧道工程企业选型提供客观依据,助力精…

2025售后完善实力强的汽车维修保养企业TOP5推荐:甄选优

汽车维修保养是车主日常用车的核心刚需,2024年国内汽车后市场规模突破1.7万亿元,年增速保持12%以上。但行业乱象频发:32%的车主遭遇过过度保养,28%因维修技术不过关导致二次故障,售后推诿、配件以次充好等问题更是…

2025年南通小户型装修企业排名:正规资质与口碑品牌全解析

在南通这座江海之城,小户型住宅(建面60-90㎡)因适配年轻刚需、都市白领与养老家庭的需求,成为购房市场的主流。但小户型装修需在有限空间内平衡收纳、功能、美观三大核心,选择资质齐全、经验丰富的正规企业尤为关…

2025年口碑不错的布头开松机供应商推荐:看哪家实力强

本榜单依托纺织纤维加工设备领域的市场调研与真实客户口碑,深度筛选出五家标杆供应商,为企业选型提供客观依据,助力精准匹配适配的开松机合作伙伴。 TOP1 推荐:高密市诚迈环保科技有限公司 推荐指数:★★★★★ 口…

zerofs 最近的一些更新

zerofs 最近的一些更新zerofs 最近还是提供了不少有意思的更新的,比如对于slatedb lsm 的配置暴露出来了,提供了read only 节点,可以实现多实例运行了(但是注意只能运行一个read-write 节点) 说明 一些问题,当然…

zerofs 多实例访问的问题

zerofs 多实例访问的问题尽管zerofs 支持了多实例访问,但是实际体验下来并不是很友好,主要是多reader 可见性的问题,毕竟有lsm 还需要flush 问题如果需要立即可见,服务是需要重启,或者等待写入的数据达到可flush …

2025年热门的3D网眼布/3D间隔网眼布实力厂商TOP榜(专业)

2025年热门的3D网眼布/3D间隔网眼布实力厂商TOP榜(专业)行业背景与市场趋势随着消费者对健康睡眠和舒适家居需求的不断提升,3D网眼布和3D间隔网眼布作为一种新型功能性材料,近年来在家纺、婴童用品、医疗护具等领域…

2025年评价高的座椅网眼布优质厂家精选榜(精选版)

2025年评价高的座椅网眼布优质厂家精选榜(精选版)行业背景与市场趋势随着全球家居和办公环境对舒适性、健康性和美观性要求的不断提升,座椅网眼布作为功能性面料的重要组成部分,正迎来前所未有的市场机遇。2024年数…

2025年热门的电梯钢丝绳检测TOP品牌厂家排行榜

在城市化高速发展的背景下,电梯数量持续增长,而电梯钢丝绳作为关键承载部件,其安全性直接关系到人员乘梯安全与设备运行效率。近年来,随着智能检测技术的迭代,全磁探伤、磁通数据分析、实时监测等手段逐步替代传统…

2025年口碑好的智能钢丝绳检测厂家推荐及选择指南

在矿山提升设备、港口起重机械、海事工程以及高空作业装备中,钢丝绳作为关键受力构件,其安全状态直接关系到设备运行效率和人员生命安全。随着数字化与智能化技术的加速发展,智能钢丝绳检测设备正从传统人工检验向实…

2025油气润滑站节能型厂家TOP5权威推荐:赋能工业设备高

工业设备润滑系统作为保障生产连续性、降低能耗的核心环节,其市场需求正随制造业智能化转型加速释放。2024年数据显示,国内工业润滑系统市场规模突破1200亿元,年增速达32%,其中油气润滑站因节能降耗(平均降低能耗…

2025年铂金火花塞厂家排名:铱铂金火花塞供应商哪家靠谱?

在汽车后市场,火花塞作为发动机的心脏起搏器,其性能直接影响车辆动力、油耗与使用寿命。面对市场上鱼龙混杂的产品,车主常常困惑:铂金火花塞厂家排名如何?哪家铱铂金火花塞供应商更靠谱?2025年,我们综合技术实力…