Como você evita a execução da segunda página de um PageStack?

Como você evita a execução da segunda página de um PageStack?

Posso estar faltando alguma coisa aqui, mas não sei por que o código está sendo executado antes que a página 2 seja carregada.

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

E existe alguma maneira de impedir que as funções e o código da página 2 sejam executados antes que o botão seja pressionado?

Responder1

Component.onCompletedé executado assim que o interpretador lê o arquivo QML e o analisa em objetos. Seu objeto "página 2" foi criado neste momento, mas foi criado, visible: falseentão você não pode vê-lo. Isso não impede a onCompletedexecução do código.

Conheço três maneiras de fazer o código ser executado apenas quando a página é enviada para a pilha:

  1. Crie uma função personalizada que chame pageStack.push()e acione qualquer outro código que você deseja executar.

  2. Mova o código do manipulador da página 2 onCompletedpara o onVisibleChangedmanipulador. Observe que isso será chamado quando a página for empurrada e retirada da pilha; verifique o valor de visiblepara saber o que está acontecendo.

  3. Mova o objeto da página 2 para um arquivo separado, diga "page2.qml" e altere a chamada push para pageStack.push(Qt.resolvedUrl("page2.qml")). Isso criará um novo objeto de página 2 cada vez que for colocado na pilha; isso pode ou não ser o que você deseja.

Observe que todos os três chamarão o código cada vez que a página 2 for colocada na pilha. Se você quiser que ele seja chamado apenas na primeira vez, você mesmo terá que controlar isso. Para obter mais informações sobre como a criação de objetos interage com o pageStack, confiraesta resposta.

informação relacionada