
Puede que me falte algo aquí, pero no estoy seguro de por qué el código se ejecuta antes de cargar la página 2.
http://pastebin.ubuntu.com/8068379/
¿Y hay alguna forma de evitar que las funciones y el código de la página 2 se ejecuten antes de presionar el botón?
Respuesta1
Component.onCompleted
se ejecuta tan pronto como el intérprete ha leído el archivo QML y lo ha analizado en objetos. Su objeto "página 2" se crea en este momento, pero así es, visible: false
por lo que no puede verlo. Eso no impide onCompleted
que el código se ejecute.
Conozco tres formas de hacer que el código se ejecute solo cuando la página se envía a la pila:
Cree una función personalizada que llame
pageStack.push()
y active cualquier otro código que desee ejecutar.Mueva el código del controlador de la página 2
onCompleted
alonVisibleChanged
controlador. Tenga en cuenta que esto se llamará cuando la página se inserte y se saque de la pila; verifique el valor devisible
para saber qué está sucediendo.Mueva el objeto de la página 2 a un archivo separado, diga "page2.qml" y cambie la llamada push a
pageStack.push(Qt.resolvedUrl("page2.qml"))
. Esto creará un nuevo objeto de página 2 cada vez que se envíe a la pila; Esto puede ser o no lo que deseas.
Tenga en cuenta que los tres llamarán al código cada vez que la página 2 se envíe a la pila. Si solo desea que se llame la primera vez, deberá realizar un seguimiento usted mismo. Para obtener más información sobre cómo interactúa la creación de objetos con pageStack, consulteesta respuesta.