单击列表视图按钮时,我需要推送页面。我尝试了以下编码,但它无法正常工作。
ListItemComponent {
type: "imageItem"
Container {
id: publicimageItem
......
......
ImageButton {
defaultImageSource: "asset:///defaultimg.png"
pressedImageSource: "asset:///pressedimg.png"
onClicked: {
var new_page = publicimageItem.ListItem.view.nextpage.createObject();
publicimageItem.ListItem.view.navigationPane.push(new_page);
}
attachedObjects: [
ComponentDefinition {
id: nextpage
source: "NextPage.qml"
}
]
}// ImageButton
}// Container
}// ListView
当我在listview之外尝试时,它会毫无问题地进入下一页。
答案 0 :(得分:1)
使用以下代码将对象存储到全局变量的另一种最简单的方法,这对我来说很好。
onCreationCompleted: {
Qt.tabbedPane = tabbedPane;
Qt.homeTab = homeTab;
}
这里我在页面创建时将tabbedPane存储在全局变量Qt.tabbedPane中Completed.Now我能够使用Qt.tabbedPane从ListItemComponent访问它。
在您的情况下,将导航窗格存储到Qt.navigationPane = NavigationId,然后尝试从ListItemComponent访问它作为Qt.navigationPane。
希望它会有所帮助。
希望它有所帮助。
答案 1 :(得分:0)
建议NextPage.qml
的路径和页面本身有效且设置正确,我建议将onClicked()
中的代码更改为以下内容:
var new_page = nextpage.createObject();
navigationPane.push(new_page);
请确保此处可以访问navigationPane。将控制台日志记录(或使用终端slog2info实用程序)启用为前面提到的barry可能是个好主意。通过这种方式,您将能够看到代码中发生了什么以及原因。
作为另一种变体,如果您想通过与整个listitem(而不是其中的特定小部件)进行交互来导航到其他页面,则需要在onTriggered()
插槽中放置相同的代码:
ListView {
ListItemComponent {
type: "imageItem"
Container {
id: publicimageItem
......
}// Container
}// ListItemComponent
onTriggered: {
var new_page = nextpage.createObject();
navigationPane.push(new_page);
}
attachedObjects: [
ComponentDefinition {
id: nextpage
source: "NextPage.qml"
}
]
} // ListView