Sailfish应用开发入门(五)PageStack、Button使用

时间:2021-02-02 20:01:54

        PageStack提供了基于栈的Sailfish UI导航模型。
        PageStack由多个page页面组成,一个页面可以push到栈里面替代栈顶的page,或者从栈里移除某个page。
        Sailfish 应用被创建的时候PageStack就已经包含了一个page,这个page是由ApplicationWindow initialPage属性指定的。
        PageStack属性:
            busy:bool 当PageStack正在进行push或pop的时候为true
            currentPage:item PageStack栈顶page
            depth: int PageStack当前有多少个page

        PageStack方法:
           PageStack:clear() 从栈里移除所有page
           PageStack:find(function) 从栈顶到栈底搜索page,知道遇到function返回true的时候。function必须是一个js方法对象,接收page参数并且返回true或者false。
           PageStack:openDialog(dialog, properties, immediate)  压入一个Dialog到栈里面
           PageStack::pop(page, immediate) 从栈里移除page,如果没有传入page参数,则移除当前page。
           PageStack::push(page, properties, immediate)  向栈里压入一个page。page可以是Item、Component、qml的url或page数组。
           PageStack::replace(page, properties, immediate)
           PageStack::replaceWithDialog (dialog, properties, immediate)
Sailfish应用开发入门(五)PageStack、Button使用

//main.qml
import QtQuick 1.1
import Sailfish.Silica 1.0
import "pages"

ApplicationWindow
{
initialPage: Page {
id: page
Item {
id: item
anchors.centerIn: parent
Button {
id: btn1
text: "Button1"
onClicked: pageStack.push(Qt.resolvedUrl("pages/FirstPage.qml"))
}

Button {
id: btn2
anchors.baseline: btn1.bottom
text: "Button2"
onClicked: pageStack.push(Qt.resolvedUrl("pages/SecondPage.qml"))
}
}
}
cover: Qt.resolvedUrl("cover/CoverPage.qml")
}

  

//FirstPage.qml
import QtQuick 1.1
import Sailfish.Silica 1.0

Page {
id: page
Button {
anchors.horizontalCenter: page.horizontalCenter
anchors.baseline: page.baseline
text: "Back"
onClicked: pageStack.pop()
}

Label {
anchors.centerIn: parent
text: "This is FirstPage"
}
}


//SecondPage.qml
import QtQuick 1.1
import Sailfish.Silica 1.0

Page {
id: page
Button {
anchors.horizontalCenter: page.horizontalCenter
anchors.baseline: page.baseline
text: "Back"
onClicked: pageStack.pop()
}

Label {
anchors.centerIn: parent
text: "This is SecondPage"
}
}