如何从bb 10级联中的listview按钮单击事件导航到另一个页面?

时间:2013-02-20 11:06:08

标签: qml blackberry-10 blackberry-cascades

单击列表视图按钮时,我需要推送页面。我尝试了以下编码,但它无法正常工作。

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之外尝试时,它会毫无问题地进入下一页。

2 个答案:

答案 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