本文介绍了QML数据文件夹的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 在我的应用程序基于 QML 我使用相机和 CameraCapture 从相机捕获图像。捕获后,我想使用 CameraCapture.captureToLocation()将捕获的图像存储在应用程序数据文件夹中。但我不知道如何获得这个文件夹的路径。所以我的问题 - 我怎么能得到应用程序文件夹的路径写的权限?有没有办法在Qt得到它?它应该是系统指定的文件夹,我猜。例如在Android中,它应该是/ data / data / AppName。Im my app based on QML I use Camera and CameraCapture to capture an image from the camera. After it was captured I want to store captured image in application data folder with CameraCapture.captureToLocation(). But I have no idea how to get path to this folder. So my question - how can I get path to application folder wit write permissions? Is there way in Qt to get it? It should be system specified folder, I guess. For example in Android it should be /data/data/AppName. As I see LocalStorage creates its files in some similar place.推荐答案 / data / data / AppName 未映射到 QStandardPaths ,但我认为最好使用这个:/data/data/AppName is not mapped in QStandardPaths, but I think it would be better to use this one: QStandardPaths :: AppDataLocation 17返回一个目录位置,可以存储。这是一个特定于应用程序的目录。要获取存储要与其他应用程序共享的数据的路径,请使用QStandardPaths :: GenericDataLocation。返回的路径永远不为空。在Windows操作系统上,这将返回漫游路径。此枚举值已在Qt 5.4中添加。 QStandardPaths::AppDataLocation 17 Returns a directory location where persistent application data can be stored. This is an application-specific directory. To obtain a path to store data to be shared with other applications, use QStandardPaths::GenericDataLocation. The returned path is never empty. On the Windows operating system, this returns the roaming path. This enum value was added in Qt 5.4.或以下版本中的此类: QStandardPaths :: DataLocation 9返回与AppLocalDataLocation相同的值。此枚举值已弃用。使用AppDataLocation是首选,因为在Windows上,建议使用漫游路径。 QStandardPaths::DataLocation 9 Returns the same value as AppLocalDataLocation. This enumeration value is deprecated. Using AppDataLocation is preferable since on Windows, the roaming path is recommended.这些将设置为 DataLocation < APPROOT> / files,< USER> /< APPNAME> / files。从5.4开始,后者被废除为文件。您可以将其设置为以下:But note that from 5.4 on, the latter is deprecated as documented. You can set it then as follows: QString QStandardPaths :: writableLocation(StandardLocation type) QString QStandardPaths::writableLocation(StandardLocation type)返回文件注意:返回的存储位置可以是不存在的目录,也可以是不存在的目录。Note: The storage location returned can be a directory that does not exist; i.e., it may need to be created by the system or the user.所以,你会这样写:QString dataPath = QStandardPaths::writableLocation(QStandardPaths::AppDataLocation);// Do not need to check against empty string for this value as per documentatioCameraCapture.captureToLocation(dataPath);注意:请不要使用 QStandardPaths :: ApplicationsLocation 为此目的,因为那是非专用位置。此外,Android甚至不支持它:Note: Please do not use QStandardPaths::ApplicationsLocation for this purpose since that is the non-dedicated location. In addition, it is even unsupported on Android: ApplicationsLocation不支持(目录不可读) ApplicationsLocation not supported (directory not readable)如果要跨应用程序共享图像,则需要使用此方法,并对上述代码进行细微调整。虽然我想你想要上面的一个,它是有点不清楚你想要哪一个,所以我提到两个:If you want to share the image across applications, you would need to use this with minor adjustment to the code above. While I think you wanted the one above, it is a bit unclear which one you wanted, so I am mentioning both: StandardPaths :: GenericDataLocation 11返回可以存储应用程序共享的持久数据的目录位置。这是一个通用值。返回的路径永远不为空。 StandardPaths::GenericDataLocation 11 Returns a directory location where persistent data shared across applications can be stored. This is a generic value. The returned path is never empty.这是设置为 GenericDataLocation< USER>。确切的映射在类文档中提到,你只需要向下滚动到表。我不能给直接的URL,因为没有固定链接到那个部分。你也可以检查自己,这是最好的。This is set to GenericDataLocation "<USER>" on Android. The exact mappings are mentioned in the class documentation, you just need to scroll down to the tables. I cannot give direct URL as there is no permalink to that section. You can check yourself, too, which fits the best. 这篇关于QML数据文件夹的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云! 06-27 08:14