QML中的多页面应用

时间:2014-01-23 09:34:51

标签: android ios qt qml

我被要求为客户创建一个应用程序,它可能同时适用于Android和iOS(首先专注于iOS)。所以我认为Qt可能就是答案。我想使用Qt Quick创建应用程序,但我似乎找不到有效处理多个页面的方法,请记住每个页面都可能相当重量级。

到目前为止,我已经尝试过:

  • 用加载器分页,即动态拉入所需的屏幕。这有效但第一次加载屏幕时会有明显的延迟
  • 使每个页面成为一个组件并仅显示必要的屏幕。这会在启动时加载所有太重的内容
  • 使每个页面成为一个组件并通过ListView显示它们。与上述问题相同。

必须有一个中间立场,其中视图基本上可以像本机iOS应用程序一样进入低内存模式。欢迎任何建议。

注意:屏幕的进展不一定是线性的

2 个答案:

答案 0 :(得分:2)

我对QML的体验相当有限,但从其他用户体验经验来看,我认为该解决方案会涉及重新分解您的网页,以便为其内部子项/组件使用Loader项。根据我的阅读,听起来好像你在每个页面上使用Loader项目。

例如,当您的程序开始加载您的页面时,它应该在内存上非常亮,否则许多仍然是需要动态加载的大型组件。

当用户提供输入以转到特定页面时,动画/显示通常不应该延迟。然后,页面本身应该为需要加载的每个组件使用Loader项(即具有大内存占用的组件)。

在加载组件时,您可以显示进度条/滚轮动画。组件通过onLoaded signal完成加载后,您可以隐藏进度条/滚轮。

您可能还想查看Loader项目的asynchronous property,以确保在组件加载时任何动画(即进度条/滚轮)都可以避免毛刺。

最后,当需要隐藏页面时,只需将每个Loader项目的active property设置为false,它就应该释放已加载的组件。

希望这有助于而且不会重复你已经尝试过的事情。

答案 1 :(得分:0)

旧问题,但var remoteIpAddress = HttpContext.Features.Get<IHttpConnectionFeature>()?.RemoteIpAddress; 的{​​{3}}支持推送和弹出各种动画。

如前面的答案所示,使用StackView也是一个选项,但它不会让您轻松动画更改(更改视图时,旧的和​​新的不能同时使用,因此您可以做不好的动画。

另一种方法是使用Qt.Controls,懒惰地实例化视图并为过渡设置动画。查看QtWS 2015谈话,幻灯片和代码Loader中的示例。