QML 中的 StackView 替代方案
StackView alternative in QML
到目前为止,我一直在使用 QML 中的 StackView 从一个屏幕转到另一个屏幕。但我发现也可以只创建不同的项目,将其设置为可见或不可见,以使用新视图更新屏幕。例如,我可以有一个页眉、一个设置为可见的主要项目 (Item1) 和一个页脚。然后我可以将 Item1 设置为不可见,将 Item2 设置为可见。
我想知道每个解决方案的 advantage/disadvantage 是什么? (StackView VS 视图 visible/invisible)
正如@ddriver 所说,使用StackView
的优点是您不必全部自己完成。我怀疑不使用 StackView(如果您使用 StackView 的话)所获得的性能优势是否会超过代码可读性的下降。如果我不得不维护你的代码并且看到你在自己做,我会问的第一个问题是你为什么不直接使用 StackView
.
- 过渡:您必须为每个页面维护动画,您可以通过
StackView
免费获得 - 例如,它们默认存在,您无需编写一行代码获得好看的动画。
- 可见性:您可能必须为每个页面创建一个索引,并将其与
currentIndex
属性 进行比较,例如你的 main.qml
文件。给每个 "page" 一个索引,并为每个项目设置 visible: index == currentIndex
。您必须确保在 动画(如果有的话)之后发生这种情况。
- 内存:
StackView
的典型用例是推送 Component
s,项目从中被 StackView
实例化和管理。如果您有很多复杂的页面,如果您不在它们不可见时销毁它们,这 可能会 影响性能。
I could have for example a header, a main item (Item1) set to visible and a footer.
Page
and ApplicationWindow
也有这个功能。
如果您将其作为学习练习进行,请务必使用自定义实现。
如果您的目标是获得可靠的(StackView
已自动测试并暴露于 public)成品,请使用 StackView
。
到目前为止,我一直在使用 QML 中的 StackView 从一个屏幕转到另一个屏幕。但我发现也可以只创建不同的项目,将其设置为可见或不可见,以使用新视图更新屏幕。例如,我可以有一个页眉、一个设置为可见的主要项目 (Item1) 和一个页脚。然后我可以将 Item1 设置为不可见,将 Item2 设置为可见。
我想知道每个解决方案的 advantage/disadvantage 是什么? (StackView VS 视图 visible/invisible)
正如@ddriver 所说,使用StackView
的优点是您不必全部自己完成。我怀疑不使用 StackView(如果您使用 StackView 的话)所获得的性能优势是否会超过代码可读性的下降。如果我不得不维护你的代码并且看到你在自己做,我会问的第一个问题是你为什么不直接使用 StackView
.
- 过渡:您必须为每个页面维护动画,您可以通过
StackView
免费获得 - 例如,它们默认存在,您无需编写一行代码获得好看的动画。 - 可见性:您可能必须为每个页面创建一个索引,并将其与
currentIndex
属性 进行比较,例如你的main.qml
文件。给每个 "page" 一个索引,并为每个项目设置visible: index == currentIndex
。您必须确保在 动画(如果有的话)之后发生这种情况。 - 内存:
StackView
的典型用例是推送Component
s,项目从中被StackView
实例化和管理。如果您有很多复杂的页面,如果您不在它们不可见时销毁它们,这 可能会 影响性能。
I could have for example a header, a main item (Item1) set to visible and a footer.
Page
and ApplicationWindow
也有这个功能。
如果您将其作为学习练习进行,请务必使用自定义实现。
如果您的目标是获得可靠的(StackView
已自动测试并暴露于 public)成品,请使用 StackView
。