QStandardPaths

一、描述

此类提供了访问标准路径的方法。

二、类型成员

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)));
    }

 

  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值