Component.onCompleted
é executado assim que o interpretador lê o arquivo QML e o analisa em objetos. Seu objeto "página 2" é criado no momento, mas tem visible: false
para que você não possa vê-lo. Isso não impede que o código onCompleted
seja executado.
Eu conheço três maneiras de fazer o código ser executado somente quando a página é empurrada para a pilha:
-
Crie uma função personalizada que chame
pageStack.push()
e acione qualquer outro código que você queira executar. -
Mova o código do manipulador
onCompleted
da página 2 para o manipuladoronVisibleChanged
. Observe que isso será chamado quando a página for empurrada para fora 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 para
pageStack.push(Qt.resolvedUrl("page2.qml"))
. Isso criará um novo objeto de página 2 toda vez que for empurrado para a pilha; isso pode ou não ser o que você deseja.
Note que todos os três irão chamar o código toda vez que a página 2 for empurrada para a pilha. Se você quer que seja chamado pela primeira vez, você terá que acompanhar você mesmo. Para obter mais informações sobre como a criação de objetos interage com o pageStack, confira esta resposta .