如何阻止 PageStack 中的第二页运行?

如何阻止 PageStack 中的第二页运行?

我可能在这里遗漏了一些东西,但我不确定为什么在第 2 页加载之前运行代码。

http://pastebin.ubuntu.com/8068379/

有什么方法可以阻止在按下按钮之前运行第 2 页内的函数和代码?

答案1

Component.onCompleted一旦解释器读取 QML 文件并将其解析为对象,它就会运行。此时会创建“第 2 页”对象,但创建后visible: false您看不到它。但这不会阻止onCompleted代码运行。

我知道有三种方法可以让代码仅在页面被推送到堆栈时运行:

  1. 创建一个自定义函数,调用pageStack.push()并触发您想要运行的任何其他代码。

  2. 将代码从页面 2 的onCompleted处理程序移至onVisibleChanged处理程序。请注意,当页面被推送和从堆栈弹出时,都会调用此处理程序;检查的值visible以判断正在发生什么。

  3. 将第 2 页对象移至单独的文件,例如“page2.qml”,并将推送调用更改为pageStack.push(Qt.resolvedUrl("page2.qml"))。每次将其推送到堆栈时,都会创建一个新的第 2 页对象;这可能是也可能不是您想要的。

请注意,每次将第 2 页推送到堆栈时,这三个代码都会调用。如果您只想在第一次调用它,则必须自己跟踪。有关对象创建如何与 pageStack 交互的更多信息,请查看这个答案

相关内容