经常我们的程序中需要接见一些特殊的路径,好比程序所在的路径、用户目录路径、暂且文件夹等。在 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
本站声明:网站内容来源于网络,若有侵权,请联系我们,我们将及时处理。