QStandardPaths获得系统目录
Qt 5.10.1
方法
QStandardPaths类提供了访问标准路径的方法。
此类包含用于查询本地文件系统上的标准位置的函数,例如用户特定目录或系统配置目录。
根据传入的StandardLocation枚举类型,返回相对应的路径
QString QStandardPaths::displayName(StandardLocation type)
在特定目录下搜索某个可执行程序,若不传如目录,则表示在系统目录中搜索,在大部分系统中,即为PATH所表示的目录位置。所以,如果既想搜索系统目录又想搜索自己指定的目录,则需要调用该函数两次,一次传入目录参数,一次不传该参数即可。 并且,在Windows平台上,不需要为executableName添加.exe后缀,该函数会自动为我们追加。
QString QStandardPaths::findExecutable(const QString &executableName, const QStringList &paths = QStringList())
该函数会返回文件或目录的绝对路径;如果没找到,则返回空字符串。
QString QStandardPaths::locate(StandardLocation type, const QString &fileName, LocateOptions options = LocateFile)
QStringList QStandardPaths::locateAll(StandardLocation type, const QString &fileName, LocateOptions options = LocateFile)
在标准目录下查询一个或多个指定名字的文件或目录。返回属于类型type的所有目录。返回的目录列表按优先级从高到低排序。如果存在writableLocation(),则该目录优先。
QStringList QStandardPaths::standardLocations(StandardLocation type)
QString QStandardPaths::writableLocation(StandardLocation type)
如果testMode为true,则在QStandardPaths中启用一个特殊的“测试模式”,它将可写位置更改为指向测试目录,以防止自动测试读取或写入当前用户的配置。这会影响测试程序可能写入文件的位置:GenericDataLocation
,DataLocation
,ConfigLocation
,GenericConfigLocation
,AppConfigLocation
,GenericCacheLocation
,CacheLocation
。 其他位置不受影响。
在Unix上,XDG_DATA_HOME
设置为〜/.qttest/share
,XDG_CONFIG_HOME
设置为〜/.qttest/config
,XDG_CACHE_HOME
设置为〜/.qttest/cache
。
在macOS上,data转到〜/.qttest/Application Support
,cache转到〜/.qttest/Cache
,config转到〜/.qttest/Preferences
。
在Windows上,一切都进入Application Data下的“qttest”目录。
void QStandardPaths::setTestModeEnabled(bool testMode)
枚举
Constant | Value | Description |
---|---|---|
QStandardPaths::DesktopLocation | 0 | 返回用户的桌面目录。 这是一个通用值。 在没有桌面概念的系统上。 |
QStandardPaths::DocumentsLocation | 1 | 返回包含用户文档文件的目录。 这是一个通用值。 返回的路径永远不会为空。 |
QStandardPaths::FontsLocation | 2 | 返回包含用户字体的目录。 这是一个通用值。 请注意,安装字体可能需要额外的特定于平台的操作。 |
QStandardPaths::ApplicationsLocation | 3 | 返回包含用户应用程序的目录(可执行文件,应用程序包或它们的快捷方式)。 这是一个通用值。 请注意,安装应用程序可能需要其他特定于平台的操作。 此目录中的文件,文件夹或快捷方式是特定于平台的。 |
QStandardPaths::MusicLocation | 4 | 返回包含用户音乐或其他音频文件的目录。 这是一个通用值。 如果不存在特定于音乐文件的目录,则返回用于存储用户文档的目录。 |
QStandardPaths::MoviesLocation | 5 | 返回包含用户电影和视频的目录。 这是一个通用值。 如果不存在特定于电影文件的目录,则返回用于存储用户文档的目录。 |
QStandardPaths::PicturesLocation | 6 | 返回包含用户图片或照片的目录。 这是一个通用值。 如果不存在特定于图片文件的目录,则返回用于存储用户文档的目录。 |
QStandardPaths::TempLocation | 7 | 返回可以存储临时文件的目录。 返回的值可能是特定于应用程序的,在此用户的其他应用程序之间共享,甚至在系统范围内。 返回的路径永远不会为空。 |
QStandardPaths::HomeLocation | 8 | 返回用户的主目录(与QDir::homePath() 相同)。 在Unix系统上,这等于HOME环境变量。 此值可能是通用的或特定于应用程序的,但返回的路径从不为空。 |
QStandardPaths::DataLocation | 9 | 返回与AppLocalDataLocation相同的值。 不推荐使用此枚举值。 使用AppDataLocation是首选,因为在Windows上,建议使用漫游路径。 |
QStandardPaths::CacheLocation | 10 | 返回缓存数据的目录位置。 这是一个特定于应用程序的目录。 返回的路径永远不会为空。 |
QStandardPaths::GenericCacheLocation | 15 | 返回应用程序之间共享的特定于用户的非必要(缓存)数据的目录位置。 这是一个通用值。 请注意,如果系统没有共享缓存的概念,则返回的路径可能为空。 |
QStandardPaths::GenericDataLocation | 11 | 返回可以存储跨应用程序共享的持久数据的目录位置。 这是一个通用值。 返回的路径永远不会为空。 |
QStandardPaths::RuntimeLocation | 12 | 返回应写入运行时通信文件的目录位置,如Unix本地套接字。 这是一个通用值。 某些系统上返回的路径可能为空。 |
QStandardPaths::ConfigLocation | 13 | 返回用户特定配置文件的目录位置。 这可以是通用值或特定于应用程序,返回的路径永远不会为空。 |
QStandardPaths::DownloadLocation | 14 | 返回用户下载文件的目录。 这是一个通用值。 如果不存在特定于下载的目录,则返回用于存储用户文档的目录。 |
QStandardPaths::GenericConfigLocation | 16 | 返回多个应用程序之间共享的用户特定配置文件的目录位置。 这是一个通用值,返回的路径永远不会为空。 |
QStandardPaths::AppDataLocation | 17 | 返回可以存储持久应用程序数据的目录位置。 这是一个特定于应用程序的目录。 要获取存储要与其他应用程序共享的数据的路径,请使用QStandardPaths::GenericDataLocation 。 返回的路径永远不会为空。 在Windows操作系统上,这将返回漫游路径。 该枚举值在Qt 5.4中添加。 |
QStandardPaths::AppLocalDataLocation | DataLocation | 返回Windows操作系统上的本地设置路径。 在所有其他平台上,它返回与AppDataLocation相同的值。 该枚举值在Qt 5.4中添加。 |
QStandardPaths::AppConfigLocation | 18 | 返回用户特定配置文件的目录位置。 这是一个特定于应用程序的目录,返回的路径永远不会为空。 这个枚举值在Qt 5.5中添加。 |
下表提供了不同操作系统上的路径示例。 第一条路径是可写路径(除非另有说明)。 其他附加路径(如果有)表示不可写的位置。
Path type | macOS | Windows |
---|---|---|
DesktopLocation | “~/Desktop” | “C:/Users//Desktop” |
DocumentsLocation | “~/Documents” | “C:/Users//Documents” |
FontsLocation | “/System/Library/Fonts” (not writable) | “C:/Windows/Fonts” (not writable) |
ApplicationsLocation | “/Applications” (not writable) | “C:/Users//AppData/Roaming/Microsoft/Windows/Start Menu/Programs” |
MusicLocation | “~/Music” | “C:/Users//Music” |
MoviesLocation | “~/Movies” | “C:/Users//Videos” |
PicturesLocation | “~/Pictures” | “C:/Users//Pictures” |
TempLocation | randomly generated by the OS | “C:/Users//AppData/Local/Temp” |
HomeLocation | “~” | “C:/Users/” |
DataLocation | “~/Library/Application Support/”, “/Library/Application Support/”. “/…/Resources” | “C:/Users//AppData/Local/”, “C:/ProgramData/”, “”, “/data”, “/data/” |
CacheLocation | “~/Library/Caches/”, “/Library/Caches/” | “C:/Users//AppData/Local//cache” |
GenericDataLocation | “~/Library/Application Support”, “/Library/Application Support” | “C:/Users//AppData/Local”, “C:/ProgramData”, “”, “/data” |
RuntimeLocation | “~/Library/Application Support” | “C:/Users/” |
ConfigLocation | “~/Library/Preferences” | “C:/Users//AppData/Local/”, “C:/ProgramData/” |
GenericConfigLocation | “~/Library/Preferences” | “C:/Users//AppData/Local”, “C:/ProgramData” |
DownloadLocation | “~/Downloads” | “C:/Users//Documents” |
GenericCacheLocation | “~/Library/Caches”, “/Library/Caches” | “C:/Users//AppData/Local/cache” |
AppDataLocation | “~/Library/Application Support/”, “/Library/Application Support/”. “/…/Resources” | “C:/Users//AppData/Roaming/”, “C:/ProgramData/”, “”, “/data”, “/data/” |
AppLocalDataLocation | “~/Library/Application Support/”, “/Library/Application Support/”. “/…/Resources” | “C:/Users//AppData/Local/”, “C:/ProgramData/”, “”, “/data”, “/data/” |
AppConfigLocation | “~/Library/Preferences/” | “C:/Users//AppData/Local/”, “C:/ProgramData/” |
Path type | Linux |
---|---|
DesktopLocation | “~/Desktop” |
DocumentsLocation | “~/Documents” |
FontsLocation | “~/.fonts” |
ApplicationsLocation | “~/.local/share/applications”, “/usr/local/share/applications”, “/usr/share/applications” |
MusicLocation | “~/Music” |
MoviesLocation | “~/Videos” |
PicturesLocation | “~/Pictures” |
TempLocation | “/tmp” |
HomeLocation | “~” |
DataLocation | “~/.local/share/”, “/usr/local/share/”, “/usr/share/” |
CacheLocation | “~/.cache/” |
GenericDataLocation | “~/.local/share”, “/usr/local/share”, “/usr/share” |
RuntimeLocation | “/run/user/” |
ConfigLocation | “~/.config”, “/etc/xdg” |
GenericConfigLocation | “~/.config”, “/etc/xdg” |
DownloadLocation | “~/Downloads” |
GenericCacheLocation | “~/.cache” |
AppDataLocation | “~/.local/share/”, “/usr/local/share/”, “/usr/share/” |
AppLocalDataLocation | “~/.local/share/”, “/usr/local/share/”, “/usr/share/” |
AppConfigLocation | “~/.config/”, “/etc/xdg/” |
Path type | Android | iOS |
---|---|---|
DesktopLocation | “/files” | “/Documents/Desktop” |
DocumentsLocation | “/Documents”, “//Documents” | “/Documents” |
FontsLocation | “/system/fonts” (not writable) | “/Library/Fonts” |
ApplicationsLocation | not supported (directory not readable) | not supported |
MusicLocation | “/Music”, “//Music” | “/Documents/Music” |
MoviesLocation | “/Movies”, “//Movies” | “/Documents/Movies” |
PicturesLocation | “/Pictures”, “//Pictures” | “/Documents/Pictures”, “assets-library://” |
TempLocation | “/cache” | “/tmp” |
HomeLocation | “/files” | “” (not writable) |
DataLocation | “/files”, “//files” | “/Library/Application Support” |
CacheLocation | “/cache”, “//cache” | “/Library/Caches” |
GenericDataLocation | “” | “/Documents” |
RuntimeLocation | “/cache” | not supported |
ConfigLocation | “/files/settings” | “/Library/Preferences” |
GenericConfigLocation | “/files/settings” (there is no shared settings) | “/Library/Preferences” |
DownloadLocation | “/Downloads”, “//Downloads” | “/Documents/Downloads” |
GenericCacheLocation | “/cache” (there is no shared cache) | “/Library/Caches” |
AppDataLocation | “/files”, “//files” | “/Library/Application Support” |
AppConfigLocation | “/files/settings” | “/Library/Preferences/” |
AppLocalDataLocation | “/files”, “//files” | “/Library/Application Support” |