¿Cómo se evita que se ejecute la segunda página de un PageStack?

¿Cómo se evita que se ejecute la segunda página de un PageStack?

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.onCompletedse 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: falsepor lo que no puede verlo. Eso no impide onCompletedque 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:

  1. Cree una función personalizada que llame pageStack.push()y active cualquier otro código que desee ejecutar.

  2. Mueva el código del controlador de la página 2 onCompletedal onVisibleChangedcontrolador. Tenga en cuenta que esto se llamará cuando la página se inserte y se saque de la pila; verifique el valor de visiblepara saber qué está sucediendo.

  3. 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.

información relacionada