不允许用户访问“程序文件夹”,这是好的:它是一个系统文件夹,只能用于与系统相关的操作(如安装或卸载程序)。
有很多地方可以根据情况存储“程序数据”,QStandardPaths根据类别位置提供对其路径的访问。您可能感兴趣的是:
ConfigLocation
:返回应写入用户特定配置文件的目录位置。这可能是通用值或特定于应用程序的值,并且返回的路径永远不会为空。
AppDataLocation
:返回可以存储持久应用程序数据的目录位置。这是一个特定于应用程序的目录。
AppLocalDataLocation
: 与前一个一样,但特定于 Windows。
AppConfigLocation
:返回应写入用户特定配置文件的目录位置。这是一个特定于应用程序的目录,返回的路径永远不会为空。
可以使用以下静态方法访问这些路径(以及文档中列出的其他路径):
如果您需要存储用户配置,您可以使用QStandardPaths.writableLocation(AppConfigLocation)
,而如果您有一些应用程序使用的特定于用户的内部数据(电子邮件数据库、文档模板等)QStandardPaths.writableLocation(AppLocalDataLocation)
应该是一个不错的选择。
在这两种情况下,这些路径可能不存在,因此您需要确保并最终创建它们,可能通过使用QDir(path)
:
dataPath = QtCore.QStandardPaths.writableLocation(AppLocalDataLocation)
dataPathDir = QtCore.QDir(dataPath)
if not dataPathDir.exists():
# create the directory (including parent directories if they don't exist);
# that the argument of mkpath is relative to the QDir's object path, so
# using '.' means that it will create the actual dataPath
dataPathDir.mkpath('.')
请注意,对于上述所有内容(尤其是最后 3 个),您需要正确设置organizationName 和applicationName。