qt 获取当前程序运行路径_Qt 获取程序所在路径等特殊路径的方式

本文详细介绍了在Qt中如何获取程序的运行路径、完整名称、当前工作目录、用户目录、桌面路径、程序数据存放路径以及临时文件路径。通过QCoreApplication、QDir和QStandardPaths等类的不同方法,可以方便地实现这些功能。对于Qt 4和Qt 5的不同实现方式也进行了对比和说明。
摘要由CSDN通过智能技术生成

经常我们的程序中需要接见一些特殊的路径,好比程序所在的路径、用户目录路径、暂且文件夹等。在 Qt 中实现这几个功效所用的方式虽然都不难,然则各不相同,每次用到时还要现去查,很不利便。因此就写了这篇博客,把这几种需求的实现方式总结了一下。

好比我们有一个程序在:

C:/Qt/examples/tools/regexp/regexp.exe

1. 程序所在路径

获取 exe 程序所在路径,QCoreApplication 类里就实现了相关的功效:

//输出:C:/Qt/examples/tools/regexp

qDebug() << QCoreApplication::applicationDirPath();

2. 程序的完整名称

可以这么写:

//输出:C:/Qt/examples/tools/regexp/regexp.exe

qDebug() << qApp->applicationFilePath();

3. 当前事情目录

QDir 提供了一个静态函数 currentPath() 可以获取当前事情目录,函数原型如下:

qDebug() << QDir::currentPath();

若是我们是双击一个程序运行的,那么程序的事情目录就是程序所在目录。

若是是在命令行下运行一个程序,那么运行程序时在命令行的哪个目录,谁人目录就是当前目录。

4. 用户目录路径

Qt 4 中的方式。下面的方式只对 Qt 4 有用,Qt 5 已经删除了 storageLocation() 方式。

QDesktopServices::storageLocation(QDesktopServices::HomeLocation);

Qt 5 中引入的方式。

QStandardPaths::writableLocation(QStandardPaths::HomeLocation);

或者

QStandardPaths::standardLocations(QStandardPaths::HomeLocation);

这两个方式的区别是 standardLocations() 返回值是 QStringList。固然对于 HomeLocation 来说这个 QStringList 中只有一个 QString。

另有另外一种方式,行使 QDir 类的一个静态函数:

QDir::homePath();

博主的用户目录路径为:”C:/Users/Administrator”。

5. 桌面路径

Qt 4 中的方式。下面的方式只对 Qt 4 有用,Qt 5 已经删除了 storageLocation() 方式。

QDesktopServices::storageLocation(QDesktopServices::DesktopLocation);

Qt 5 中引入的方式。

QStandardPaths::writableLocation(QStandardPaths::DesktopLocation);

QStandardPaths::standardLocations(QStandardPaths::DesktopLocation);

6. 程序数据存放路径

通常我们会将程序所需的一些数据存入注册表。然则有时需要存储的数据太多,放在注册表中就不适合了。这时我们就要找个专门的地方来放数据。以前我喜欢将数据直接放到程序所在目录,然则厥后发现我的程序运行时经常没有权限对这个目录下的文件举行写操作。厥后发现实在 Qt 早就替我们思量过这些问题了。

Qt 4 中的方式。下面的方式只对 Qt 4 有用,Qt 5 已经删除了 storageLocation() 方式。

QDesktopServices::storageLocation(QDesktopServices::DataLocation);

Qt 5 中引入的方式。

QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);

QStandardPaths::standardLocations(QStandardPaths::AppDataLocation);

Qt 5.5 中引入了另一种方式:

QStandardPaths::writableLocation(QStandardPaths::AppConfigLocation);

QStandardPaths::standardLocations(QStandardPaths::AppConfigLocation);

这个方式一般来说和上面的方式获得的结果是相同的。根据 Qt 辅助文档的注释,这个方式可以确保返回的路径非空。以是我以为应该优先选用这个方式。

7. 暂且文件路径

Qt 4 中的方式。下面的方式只对 Qt 4 有用,Qt 5 已经删除了 storageLocation() 方式。

QDesktopServices::storageLocation(QDesktopServices::TempLocation);

Qt 5 中引入的方式。

QStandardPaths::writableLocation(QStandardPaths::TempLocation);

QStandardPaths::standardLocations(QStandardPaths::TempLocation);

更传统的方式是行使 QDir 的一个静态函数 tempPath()。

QDir::tempPath();

在这个目录下天生暂且文件和暂且目录需要用到另外两个类: QTemporaryFile 和 QTemporaryDir。就不睁开先容了,人人可以参考 qt 的辅助文档。

至此,常用的种种特殊路径就先容的差不多了。剩下另有些不常用的,可以参考 QStandardPaths 类的先容。

参考:

原文链接:https://www.cnblogs.com/linuxAndMcu/p/12869383.html

本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值