QML中的StackView替代方案

时间:2016-08-30 12:14:15

标签: qt qml qtquickcontrols2

到目前为止,我一直在使用QML中的StackView从一个屏幕转到另一个屏幕。但我发现也可以创建不同的项目,将其设置为可见或不可见,以使用新视图更新屏幕。我可以有一个标题,一个设置为可见的主项(Item1)和一个页脚。然后,我可以将Item1设置为不可见,将Item2设置为可见。

我想知道每种解决方案的优点/缺点是什么? (StackView VS视图可见/不可见)

1 个答案:

答案 0 :(得分:3)

正如@ddriver所说,使用StackView的好处在于你不必自己动手。我怀疑你不使用StackView获得的性能优势(如果你得到一个)将超过代码可读性的下降。如果我必须维护您的代码并看到您自己正在执行此操作,那么我要问的第一个问题就是您为什么不使用StackView

  • 转换:您必须为每个页面维护动画,您可以使用StackView免费获得动画,因为默认情况下它们存在并且您不必编写单行获得漂亮动画的代码。
  • 可见性:您可能必须拥有每个网页的索引,并将其与currentIndex属性进行比较,例如:您的main.qml文件。给每个"页面"索引并为每个项目设置visible: index == currentIndex。您必须确保在动画之后发生这种情况(如果您有)。
  • 内存:StackView的典型用例是推送由Component实例化和管理项目的StackView。如果你有很多复杂的网页,那么当不可见时,你 会影响效果。
  

我可以将标题,主要项目(Item1)设置为可见和页脚。

PageApplicationWindow也有此功能。

如果您将其作为学习练习,请务必使用自定义实施。

如果您的目标是获得可靠的(StackView自动测试并向公众公开)成品,请使用StackView