【发布时间】:2015-01-28 14:25:42
【问题描述】:
我想知道以下情况的最佳方法是什么:
我有一个 QML 文件,它从 HTTP 服务器加载到 Qt/QML android 应用程序以显示 UI。
用户可以点击目录的缩略图并让应用为每个目录下载另一个 QML 文件。目录 QML 被下载并存储在设备上以供离线使用。
这意味着我有许多具有唯一 ID 的目录来存储目录 QML 和资产。像这样的:
/my/app_data_path/catalogs/CATALOG_001
/my/app_data_path/catalogs/CATALOG_007
/my/app_data_path/catalogs/CATALOG_010
在 UI 中,我想显示一个指示符,指示目录是否已下载到设备。根据 QML 显示/隐藏指标的最佳方法是什么?
Rectangle {
id: indicator
visible: MyApp.catalogIsLoaded('some ID here')
}
这是我想到的,但我认为这不是最好的方法,因为我需要一种方法来传递目录 ID 以检查数据目录是否存在。此外,我必须想办法重新评估可见状态/不时调用catalogIsLoaded 方法——尤其是在下载或删除目录之后。
有没有更好/更清洁的方法?
【问题讨论】:
-
什么是 MyApp ?您需要一个模型来存储此特定目录是否已下载。该模型可以有一个绑定到可见的 Q_PROPERTY(bool)。在下载目录时将该属性设置为 true。在删除文件时将其设置为 false(如果有的话)
-
旁注:请注意,任何入侵您的 HTTP 的人都(至少)拥有对存储在用户设备上的任何文件 (mobilephonedevelopment.com/qt-qml-tips/#File%20Access) 的完全读取权限。您可能希望以更结构化的方式(例如 JSON)或更沙盒化的方式 (HTML) 获取数据