一、描述
此类提供了访问标准路径的方法。
二、类型成员
1、enum QStandardPaths::LocateOption:此枚举描述了可用于控制 locate() 和 locateAll() 行为的标志。
- LocateFile:返回文件
- LocateDirectory:返回目录
2、enum QStandardPaths::StandardLocation:此枚举描述了可以使用诸如 writableLocation()、standardLocations() 和 displayName() 等方法查询的不同位置。
- DesktopLocation:返回用户的桌面目录。在没有桌面概念的系统上,这与 HomeLocation 相同。
- DocumentsLocation:返回包含用户文档文件的目录。返回的路径永远不会为空。
- FontsLocation:返回包含用户字体的目录。
- ApplicationsLocation:返回包含用户应用程序(可执行文件、应用程序包或它们的快捷方式)的目录。此目录中的文件、文件夹或快捷方式是特定于平台的。
- MusicLocation:返回包含用户音乐或其他音频文件的目录。
- MoviesLocation:返回包含用户电影和视频的目录。
- PicturesLocation:返回包含用户图片或照片的目录。
- TempLocation:返回可以存储临时文件的目录。返回的值可能是特定于应用程序的,在此用户的其他应用程序之间共享,甚至是系统范围的。返回的路径永远不会为空。
- HomeLocation:返回用户的主目录(与 QDir::homePath() 相同)。在 Unix 系统上,这等于 HOME 环境变量。
- AppLocalDataLocation:返回 Windows 操作系统上的本地设置路径。在所有其他平台上,它返回与 AppDataLocation 相同的值。
- CacheLocation:返回应写入用户特定的非必要(缓存)数据的目录位置。这是一个特定于应用程序的目录。返回的路径永远不会为空。
- GenericCacheLocation:返回可以存储跨应用程序共享的缓存数据的目录位置。如果系统没有共享缓存的概念,则返回的路径可能为空。
- GenericDataLocation:返回可以存储跨应用程序共享的持久数据的目录位置。返回的路径永远不会为空。
- RuntimeLocation:返回应该写入运行时通信文件的目录位置,例如 Unix 本地套接字。在某些系统上,返回的路径可能为空。
- ConfigLocation:返回应该写入用户特定配置文件的目录位置。返回的路径永远不会为空。
- DownloadLocation:返回用户下载文件的目录。
- GenericConfigLocation:返回应该写入多个应用程序之间共享的用户特定配置文件的目录。返回的路径永远不会为空。
- AppDataLocation:返回可以存储持久应用程序数据的目录位置。这是一个特定于应用程序的目录。返回的路径永远不会为空。
- AppConfigLocation:返回应写入用户特定配置文件的目录位置。这是一个特定于应用程序的目录,返回的路径永远不会为空。
三、成员函数
1、【static】QString displayName(QStandardPaths::StandardLocation type)
返回给定位置类型的本地化显示名称或空 QString。
const QMetaObject &mo = QStandardPaths::staticMetaObject;
QMetaEnum metaEnum = mo.enumerator(mo.indexOfEnumerator("StandardLocation"));
for (int i = 0; i < metaEnum.keyCount(); ++i)
{
qDebug()<<metaEnum.key(i)<<" "<<QStandardPaths::displayName(static_cast<QStandardPaths::StandardLocation>(metaEnum.value(i)));
}
2、【static】QString findExecutable(const QString &executableName, const QStringList &paths = QStringList())
在指定路径中查找名为 executableName 的可执行文件,如果 paths 为空,则查找系统路径。
在大多数操作系统上,系统路径由 PATH 环境变量确定。
注意:在 Windows 上,会自动附加通常的可执行扩展(来自 PATHEXT 环境变量)。
例如,findExecutable("foo") 调用会查找 foo.exe 或 foo.bat(如果存在)。
返回可执行文件的绝对文件路径,如果未找到则返回空字符串。
3、【static】QString locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)
在 type 的标准位置查找名为 fileName 的文件或目录。
options 标志指定查找文件或目录。
返回找到的第一个文件或目录的绝对路径或者返回空字符串。
4、【static】QStringList locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile)
在 type 的标准位置中按名称 fileName 查找所有文件或目录。
options 标志指定查找文件或目录。
返回找到的所有文件的列表。
5、【static】void setTestModeEnabled(bool testMode)
是否在 QStandardPaths 中启用特殊的“测试模式”,它将可写位置更改为指向测试目录。这可以防止自动测试读取或写入当前用户的配置。
它会影响测试程序可能写入文件的位置:
- GenericDataLocation
- AppDataLocation
- ConfigLocation
- GenericConfigLocation
- AppConfigLocation
- GenericCacheLocation
- CacheLocation
其他位置不受影响。
- 在 Unix 上,XDG_DATA_HOME 设置为 ~/.qttest/share,XDG_CONFIG_HOME 设置为 ~/.qttest/config,XDG_CACHE_HOME 设置为 ~/.qttest/cache。
- 在 macOS 上,数据转到 ~/.qttest/Application Support,缓存转到 ~/.qttest/Cache,配置转到 ~/.qttest/Preferences。
- 在 Windows 上,所有内容都转到 %APPDATA% 下的“qttest”目录。
6、【static】QStringList standardLocations(QStandardPaths::StandardLocation type)
返回类型文件所属的所有目录。
#include <QMetaEnum>
#include <QStandardPaths>
int main(int argc, char *argv[])
{
const QMetaObject &mo = QStandardPaths::staticMetaObject;
QMetaEnum metaEnum = mo.enumerator(mo.indexOfEnumerator("StandardLocation"));
for (int i = 0; i < metaEnum.keyCount(); ++i)
{
qDebug()<<metaEnum.key(i)<<" -- "<<QStandardPaths::standardLocations(static_cast<QStandardPaths::StandardLocation>(metaEnum.value(i)));
}
}
7、【static】QString writableLocation(QStandardPaths::StandardLocation type)
返回类型文件应写入的目录。
返回的存储位置可能不存在,即它可能需要由系统或用户创建。
const QMetaObject &mo = QStandardPaths::staticMetaObject;
QMetaEnum metaEnum = mo.enumerator(mo.indexOfEnumerator("StandardLocation"));
for (int i = 0; i < metaEnum.keyCount(); ++i)
{
qDebug()<<metaEnum.key(i)<<" -- "<<QStandardPaths::writableLocation(static_cast<QStandardPaths::StandardLocation>(metaEnum.value(i)));
}