QStandardPaths 类
QStandardPaths 类提供了访问标准路径的方法。 更多...
| 头文件 | #include <QStandardPaths> | 
| CMake | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) | 
| qmake | QT += core | 
公共类型
| 枚举 | LocateOption { LocateFile, LocateDirectory } | 
| 标志 | LocateOptions | 
| 枚举 | StandardLocation { DesktopLocation, DocumentsLocation, FontsLocation, ApplicationsLocation, MusicLocation, …, GenericStateLocation } | 
静态公有成员
| QString | displayName(QStandardPaths::StandardLocation type) | 
| QString | findExecutable(const QString &executableName, const QStringList &paths = QStringList()) | 
| QString | locate(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile) | 
| QStringList | locateAll(QStandardPaths::StandardLocation type, const QString &fileName, QStandardPaths::LocateOptions options = LocateFile) | 
| void | setTestModeEnabled(bool testMode) | 
| QStringList | standardLocations(QStandardPaths::StandardLocation type) | 
| QString | writableLocation(QStandardPaths::StandardLocation type) | 
成员类型文档
枚举 QStandardPaths::LocateOption
标志 QStandardPaths::LocateOptions
此枚举描述了可用于控制 QStandardPaths::locate 和 QStandardPaths::locateAll 行为的不同标志。
| 常量 | 值 | 描述 | 
|---|---|---|
| QStandardPaths::LocateFile | 0x0 | 只返回文件 | 
| QStandardPaths::LocateDirectory | 0x1 | 只返回目录 | 
LocateOptions 类型是 QFlags<LocateOption> 的同义词。它存储 LocateOption 值的 OR 组合。
枚举 QStandardPaths::StandardLocation
此枚举描述了可以使用 QStandardPaths::writableLocation、QStandardPaths::standardLocations 和 QStandardPaths::displayName 等方法查询的不同位置。
本枚举中的某些值代表用户配置。这些枚举值在不同应用程序中返回相同的路径,因此可以用作与其他应用程序共享数据。其他值特定于此应用程序。下表中每个枚举值都描述了它是否是特定于应用程序的或通用的。
应假定特定于应用程序的目录无法被其他应用程序访问。因此,即使由相同的用户运行,放置在那里的文件也可能无法由其他应用程序读取。另一方面,应假定通用目录可由此用户运行的所有应用程序访问,但仍应假定它们无法被其他用户的应用程序访问。
与其他用户的交互数据不在 QStandardPaths 的范围内。
| 常量 | 值 | 描述 | 
|---|---|---|
| QStandardPaths::DesktopLocation | 0 | 返回用户的桌面目录。这是一个通用值。在没有任何桌面概念的系统中,这等同于 QStandardPaths::HomeLocation。 | 
| 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::AppLocalDataLocation | 9 | 在 Windows 操作系统上返回本地设置的路径。在其他所有平台上,它返回与 AppDataLocation 相同的值。此枚举值是在 Qt 5.4 中添加的。 | 
| 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::AppConfigLocation | 18 | 返回一个目录位置,用户特定配置文件应写入该位置。这是一个应用程序特定的目录,返回的路径永远不会为空。此枚举值自Qt 5.5起添加。 | 
| QStandardPaths::PublicShareLocation | 19 | 返回一个目录位置,可以存储用户特定公用文件和目录。这是一个通用值。请注意,如果系统没有公用共享位置的概念,则返回的路径可能为空。此枚举值自Qt 6.4起添加。 | 
| QStandardPaths::TemplatesLocation | 20 | 返回一个目录位置,可以存储用户特定模板文件。这是一个通用值。请注意,如果系统没有模板位置的概念,则返回的路径可能为空。此枚举值自Qt 6.4起添加。 | 
| QStandardPaths::StateLocation (自 Qt 6.7 起使用) | 21 | 返回一个目录位置,应在其中编写用户特定应用程序状态数据文件。这是一个应用程序特定的目录,且返回的路径永远不会为空。 | 
| QStandardPaths::GenericStateLocation (自 Qt 6.7 起使用) | 22 | 返回一个目录位置,应在其中编写跨多个应用程序共享的状态数据文件。此值可能为通用或应用程序特定,但返回的路径永远不会为空。 | 
以下表格提供了不同操作系统上的路径示例。第一个路径是可写路径(除非另有说明)。如果有其他路径,则代表不可写位置。
| 路径类型 | macOS | Windows | 
|---|---|---|
| DesktopLocation | "~/Desktop" | "C:/Users/<USER>/Desktop" | 
| DocumentsLocation | "~/Documents" | "C:/Users/<USER>/Documents" | 
| FontsLocation | "/System/Library/Fonts" (不可写) | "C:/Windows/Fonts" (不可写) | 
| ApplicationsLocation | "/Applications" (不可写) | "C:/Users/<USER>/AppData/Roaming/Microsoft/Windows/Start Menu/Programs" | 
| MusicLocation | "~/Music" | "C:/Users/<USER>/Music" | 
| MoviesLocation | "~/Movies" | "C:/Users/<USER>/Videos" | 
| PicturesLocation | "~/Pictures" | "C:/Users/<USER>/Pictures" | 
| TempLocation | 由操作系统随机生成 | "C:/Users/<USER>/AppData/Local/Temp" | 
| HomeLocation | "~" | "C:/Users/<USER>" | 
| AppLocalDataLocation | "~/Library/Application Support/<APPNAME>", "/Library/Application Support/<APPNAME>", "<APPDIR>/../Resources" | "C:/Users/<USER>/AppData/Local/<APPNAME>", "C:/ProgramData/<APPNAME>", "<APPDIR>", "<APPDIR>/data", "<APPDIR>/data/<APPNAME>" | 
| CacheLocation | "~/Library/Caches/<APPNAME>", "/Library/Caches/<APPNAME>" | "C:/Users/<USER>/AppData/Local/<APPNAME>/cache" | 
| StateLocation | "~/Library/Preferences/<APPNAME>/State" | "C:/Users/<USER>/AppData/Local/<APPNAME>/State", "C:/ProgramData/<APPNAME>/State" | 
| GenericDataLocation | "~/Library/Application Support", "/Library/Application Support" | "C:/Users/<USER>/AppData/Local", "C:/ProgramData", "<APPDIR>", "<APPDIR>/data" | 
| RuntimeLocation | "~/Library/Application Support" | "C:/Users/<USER>" | 
| ConfigLocation | "~/Library/Preferences" | "C:/Users/<USER>/AppData/Local/<APPNAME>", "C:/ProgramData/<APPNAME>" | 
| GenericConfigLocation | "~/Library/Preferences" | "C:/Users/<USER>/AppData/Local", "C:/ProgramData" | 
| DownloadLocation | "~/Downloads" | "C:/Users/<USER>/Downloads" | 
| GenericCacheLocation | "~/Library/Caches", "/Library/Caches" | "C:/Users/<USER>/AppData/Local/cache" | 
| GenericStateLocation | “~/Library/Preferences/State” | “C:/Users/<USER>/AppData/Local/State”, “C:/ProgramData/State” | 
| AppDataLocation | "~/Library/Application Support/<APPNAME>", "/Library/Application Support/<APPNAME>", "<APPDIR>/../Resources" | “C:/Users/<USER>/AppData/Roaming/<APPNAME>”, “C:/ProgramData/<APPNAME>”, “<APPDIR>”, “<APPDIR>/data”, “<APPDIR>/data/<APPNAME>” | 
| AppConfigLocation | “~/Library/Preferences/<APPNAME>” | "C:/Users/<USER>/AppData/Local/<APPNAME>", "C:/ProgramData/<APPNAME>" | 
| PublicShareLocation | “~/Public” | “C:/Users/Public” | 
| TemplatesLocation | “~/Templates” | “C:/Users/<USER>/AppData/Roaming/Microsoft/Windows/Templates” | 
| 路径类型 | Linux和其他UNIX操作系统 | 
|---|---|
| DesktopLocation | "~/Desktop" | 
| DocumentsLocation | "~/Documents" | 
| FontsLocation | “~/.fonts”, “~/.local/share/fonts”, “/usr/local/share/fonts”, “/usr/share/fonts” | 
| ApplicationsLocation | “~/.local/share/applications”, “/usr/local/share/applications”, “/usr/share/applications” | 
| MusicLocation | "~/Music" | 
| MoviesLocation | “~/Videos” | 
| PicturesLocation | "~/Pictures" | 
| TempLocation | “/tmp” | 
| HomeLocation | "~" | 
| AppLocalDataLocation | “~/.local/share/<APPNAME>”, “/usr/local/share/<APPNAME>”, “/usr/share/<APPNAME>” | 
| CacheLocation | “~/.cache/<APPNAME>” | 
| StateLocation | “~/.local/state/<APPNAME>” | 
| GenericDataLocation | “~/.local/share”, “/usr/local/share”, “/usr/share” | 
| RuntimeLocation | “/run/user/<USER>” | 
| ConfigLocation | “~/.config”, “/etc/xdg” | 
| GenericConfigLocation | “~/.config”, “/etc/xdg” | 
| DownloadLocation | "~/Downloads" | 
| GenericCacheLocation | “~/.cache” | 
| GenericStateLocation | “~/.local/state” | 
| AppDataLocation | “~/.local/share/<APPNAME>”, “/usr/local/share/<APPNAME>”, “/usr/share/<APPNAME>” | 
| AppConfigLocation | “~/.config/<APPNAME>”, “/etc/xdg/<APPNAME>” | 
| PublicShareLocation | “~/Public” | 
| TemplatesLocation | “~/Templates” | 
| 路径类型 | Android | iOS | 
|---|---|---|
| DesktopLocation | “<APPROOT>/files” | “<APPROOT>/Documents/Desktop” | 
| DocumentsLocation | “<USER>/Documents” [*], “<USER>/<APPNAME>/Documents” | “<APPROOT>/Documents” | 
| FontsLocation | “/system/fonts” (不可写) | “<APPROOT>/Library/Fonts” | 
| ApplicationsLocation | 不受支持(目录不可读) | 不受支持 | 
| MusicLocation | “<USER>/Music” [*], “<USER>/<APPNAME>/Music” | “<APPROOT>/Documents/Music” | 
| MoviesLocation | “<USER>/Movies” [*], “<USER>/<APPNAME>/Movies” | “<APPROOT>/Documents/Movies” | 
| PicturesLocation | “<USER>/Pictures” [*], “<USER>/<APPNAME>/Pictures” | “<APPROOT>/Documents/Pictures”, “assets-library://” | 
| TempLocation | “<APPROOT>/cache” | “<APPROOT>/tmp” | 
| HomeLocation | “<APPROOT>/files” | 系统定义 | 
| AppLocalDataLocation | “<APPROOT>/files”, “<USER>/<APPNAME>/files” | “<APPROOT>/Library/Application Support” | 
| CacheLocation | “<APPROOT>/cache”, “<USER>/<APPNAME>/cache” | “<APPROOT>/Library/Caches” | 
| StateLocation | “<APPROOT>/files/state” | |
| 通用状态位置(有共享状态) | “<APPROOT>/files/state” | |
| GenericDataLocation | “<USER>” [*] 或 “<USER>/<APPNAME>/files” | “<APPROOT>/Library/Application Support” | 
| RuntimeLocation | “<APPROOT>/cache” | 不受支持 | 
| ConfigLocation | “<APPROOT>/files/settings” | “<APPROOT>/Library/Preferences” | 
| GenericConfigLocation | “<APPROOT>/files/settings” (没有共享设置) | “<APPROOT>/Library/Preferences” | 
| DownloadLocation | “<USER>/Downloads” [*], “<USER>/<APPNAME>/Downloads” | “<APPROOT>/Documents/Downloads” | 
| GenericCacheLocation | “<APPROOT>/cache” (没有共享缓存) | “<APPROOT>/Library/Caches” | 
| AppDataLocation | “<APPROOT>/files”, “<USER>/<APPNAME>/files” | “<APPROOT>/Library/Application Support” | 
| AppConfigLocation | “<APPROOT>/files/settings” | “<APPROOT>/Library/Preferences/<APPNAME>” | 
| PublicShareLocation | 不受支持 | 不受支持 | 
| TemplatesLocation | 不受支持 | 不受支持 | 
在上面的表中,<APPNAME>通常是组织名称、应用名称,或两者兼而有之,或是在打包时生成的唯一名称。类似地,<APPROOT>是这个应用安装的位置(通常是沙箱),<APPDIR>是包含应用程序可执行文件的目录。
上面的路径不应依赖,因为它们可能会根据操作系统配置、地区或它们可能在未来的Qt版本中更改。
注意:在Android上,如果应用程序在外部存储上打开了文件(<USER>位置),在外部存储未挂载时,应用程序将被杀死。
注意:在Android 6.0 (API 23)或更高版本上,在调用QStandardPaths::writableLocation或QStandardPaths::standardLocations时,必须要在运行时请求“WRITE_EXTERNAL_STORAGE”权限。
注意:在Android中,向GenericDataLocation读取/写入需要授予READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE权限。
注意:[*] 在Android 11和更高版本上,在受限存储模式下不再直接访问公共目录。因此,形式为 "<USER>/DirName" 的路径不再返回。相反,可以使用 QFileDialog,它使用文件访问框架(SAF)访问这样的目录。
注意:在iOS上,如果您将QStandardPaths::standardLocations(QStandardPaths::PicturesLocation).last()作为参数传递给QFileDialog::setDirectory,将使用原生图像选择对话框来访问用户的照片库。返回的文件名可以使用QFile和相关API加载。此功能是在Qt 5.5中添加的。
另请参阅:writableLocation(),standardLocations(),displayName(),locate(),和locateAll()。
成员函数文档
[静态] QString QStandardPaths::displayName(QStandardPaths::StandardLocation 类型)
返回给定位置类型的本地化显示名称,或者在没有找到相关位置的情况下返回一个空的QString。
[静态] QString QStandardPaths::findExecutable(const QString &可执行名称, const QStringList &路径 = QStringList())
在指定的路径中查找名为可执行名称的可执行文件,或者当路径为空时在系统路径中查找。
在大多数操作系统中,系统路径由PATH环境变量确定。可在路径参数中设置搜索可执行文件所在的目录。为了同时搜索自己的路径和系统路径,需要调用两次findExecutable函数,一次设置路径,一次不设置路径。链接不会解析,以保留对那些执行行为依赖于它们被调用名称的可执行文件的行为。
注意:在Windows上,通常的可执行文件扩展名(由PATHEXT环境变量提供)会自动追加。例如,findExecutable("foo")调用如果在系统中存在,会找到foo.exe或foo.bat。
返回可执行文件的绝对文件路径,或者在未找到时返回一个空字符串。
如果给定的可执行名称是一个指向可执行文件的绝对路径,则返回其干净路径。
[静态] QString QStandardPaths::locate(QStandardPaths::StandardLocation 类型, const QString &文件名, QStandardPaths::LocateOptions 选项 = LocateFile)
在类型的标准位置中查找名为文件名的文件或目录。
选项标志允许您指定是否查找文件或目录。默认情况下,此标志设置为LocateFile。
返回找到的第一个文件或目录的绝对路径,否则返回一个空字符串。
[静态] QStringList QStandardPaths::locateAll(QStandardPaths::StandardLocation 类型, const QString &文件名, QStandardPaths::LocateOptions 选项 = LocateFile)
在类型的标准位置中查找所有名为文件名的文件或目录。
选项标志允许您指定是否查找文件或目录。默认情况下,此标志设置为LocateFile。
返回找到的所有文件的列表。
[静态] void QStandardPaths::setTestModeEnabled(bool testMode)
如果testMode为true,则在本节的QStandardPaths中启用特殊的“测试模式”,将可写位置更改为指向测试目录。这样可以防止自动测试读取或写入当前用户的配置。
这会影响测试程序可能写入文件的存放位置:GenericDataLocation,AppDataLocation,ConfigLocation,GenericConfigLocation,AppConfigLocation,StateLocation,GenericStateLocation,GenericCacheLocation 和 CacheLocation。其他位置不受影响。
在 Unix 上,XDG_DATA_HOME 被设置为 ~/.qttest/share,XDG_CONFIG_HOME 被设置为 ~/.qttest/config,XDG_STATE_HOME 被设置为 ~/.qttest/state,而 XDG_CACHE_HOME 被设置为 ~/.qttest/cache。
在 macOS 上,数据存放在 ~/.qttest/Application Support,缓存存放在 ~/.qttest/Cache,而配置存放在 ~/.qttest/Preferences。
在 Windows 上,所有内容都存放在位于 %APPDATA% 下的 "qttest" 目录中。
[static] QStringList QStandardPaths::standardLocations(QStandardPaths::StandardLocation type)
返回属于 type 类型的文件的所有目录。
目录列表按优先级从高到低排序,如果是可确定的,则从 writableLocation() 开始。如果没有定义类型的地址,则此列表为空。
另请参阅writableLocation。
[static] QString QStandardPaths::writableLocation(QStandardPaths::StandardLocation type)
返回应写入 type 类型的文件的目录,如果无法确定位置,则返回空字符串。
注意:返回的存储位置可能不存在;也就是说,可能需要由系统或用户创建。
© 2024 The Qt Company Ltd. 包含在其中的文档贡献是各自所有者的版权。本文件提供的文档是在GNU自由文档许可版本1.3的条款下许可的,由自由软件基金会发布。Qt及其 respective 商标在芬兰和/或其他国家/地区是世界商标,属于 The Qt Company Ltd。所有其它商标均为其各自所有者的财产。