Acredito que o seu problema é que, ao empurrar para a pilha, um nome de arquivo cria um novo objeto a cada vez, e esse novo objeto não compartilha dados com nenhum dos objetos criados anteriormente. Em vez disso, crie uma instância da página que você deseja enviar em seu arquivo QML de nível superior e insira-a na pilha de páginas sempre que quiser.
Aqui está um exemplo que espero ilustrar o que está acontecendo.
main.qml
import QtQuick 2.0
import Ubuntu.Components 0.1
MainView {
width: units.gu(50)
height: units.gu(75)
PageStack {
id: pageStack
Page {
id: page
title: "Top Page"
visible: false
Column {
anchors.fill: parent
Button {
width: parent.width
text: "Open page from object"
onClicked: pageStack.push(subPage)
}
Button {
width: parent.width
text: "Open page from file"
onClicked: pageStack.push(Qt.resolvedUrl("SubPage.qml"))
}
}
}
SubPage {
// This is an instance of the object declared in SubPage.qml. All you need
// to do to make this work is have SubPage.qml in the same directory as
// this QML file.
id: subPage
visible: false
}
Component.onCompleted: pageStack.push(page)
}
}
SubPage.qml
import QtQuick 2.0
import Ubuntu.Components 0.1
Page {
title: "SubPage"
Component.onCompleted: console.log("Made a new page")
Button {
width: parent.width
property int count: 0
text: "Clicked %1 times".arg(count)
onClicked: count += 1
}
}
Observe que o contador na página carregada do objeto persiste enquanto você se movimenta para frente e para trás na pilha de páginas, enquanto a página carregada do arquivo tem o contador definido como 0 sempre que é carregado. Além disso, o último registra um evento de conclusão no console toda vez, enquanto o primeiro registra isso somente quando o programa é iniciado.