Stacklayout 导航使用 Item Id 而不是 currentIndex = #num
Stacklayout navigate using Item Id instead of currentIndex = #num
我将 StackLayout
与许多 windows 一起使用,而不是使用 currentIndex = 0
例如我想使用项目本身的 ID。这样我就不需要关心StackLayout
中实现的Item的顺序是什么,代码也更容易阅读。
我没有碰巧找到如何这样做或者是否真的可行。有什么想法吗?
示例代码:
main.qml
StackLayout {
id: mainStack
width: parent.width - tabbar.width
x: tabbar.width
PageOne {id: pageOne}
PageTwo {id: pageTwo}
PageThree {id: pageThree}
}
Button {
text: "Go to"
onClicked: {
mainStack.currentIndex = 0 // how its done
mainStack.currentIndex = pageOne //what I want: using Item Id
}
}
您可以创建一个方法来搜索 StackLayout 的子级,如果找到它,则将 currentIndex 更改为关联的索引:
StackLayout {
id: mainStack
width: parent.width - tabbar.width
x: tabbar.width
function changeTo(item){
for(var i in this.children){
if(this.children[i] === item){
this.currentIndex = i;
return true;
}
}
return false;
}
PageOne {id: pageOne}
PageTwo {id: pageTwo}
PageThree {id: pageThree}
}
Button {
text: "Go to"
onClicked: {
mainStack.changeTo(pageOne)
}
}
我将 StackLayout
与许多 windows 一起使用,而不是使用 currentIndex = 0
例如我想使用项目本身的 ID。这样我就不需要关心StackLayout
中实现的Item的顺序是什么,代码也更容易阅读。
我没有碰巧找到如何这样做或者是否真的可行。有什么想法吗?
示例代码:
main.qml
StackLayout {
id: mainStack
width: parent.width - tabbar.width
x: tabbar.width
PageOne {id: pageOne}
PageTwo {id: pageTwo}
PageThree {id: pageThree}
}
Button {
text: "Go to"
onClicked: {
mainStack.currentIndex = 0 // how its done
mainStack.currentIndex = pageOne //what I want: using Item Id
}
}
您可以创建一个方法来搜索 StackLayout 的子级,如果找到它,则将 currentIndex 更改为关联的索引:
StackLayout {
id: mainStack
width: parent.width - tabbar.width
x: tabbar.width
function changeTo(item){
for(var i in this.children){
if(this.children[i] === item){
this.currentIndex = i;
return true;
}
}
return false;
}
PageOne {id: pageOne}
PageTwo {id: pageTwo}
PageThree {id: pageThree}
}
Button {
text: "Go to"
onClicked: {
mainStack.changeTo(pageOne)
}
}