Como você impede que a segunda página em um PageStack seja executada?

3

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

link

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

    
por ikt 17.08.2014 / 07:02

1 resposta

3

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:

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

  2. Mova o código do manipulador onCompleted da página 2 para o manipulador onVisibleChanged . Observe que isso será chamado quando a página for empurrada para fora da pilha; verifique o valor de visible para saber o que está acontecendo.

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

    
por Robert Schroll 18.08.2014 / 03:46