
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: false
então você não pode vê-lo. Isso não impede a onCompleted
execuçã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:
Crie uma função personalizada que chame
pageStack.push()
e acione qualquer outro código que você deseja executar.Mova o código do manipulador da página 2
onCompleted
para oonVisibleChanged
manipulador. Observe que isso será chamado quando a página for empurrada e retirada da pilha; verifique o valor devisible
para saber o que está acontecendo.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.