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

Qml 如何从bb 10级联中的listview按钮单击事件导航到另一个页面?,qml,blackberry-10,blackberry-cascades,Qml,Blackberry 10,Blackberry Cascades,单击列表视图按钮时,我需要按下一个页面。我已经尝试了下面的编码,但它不工作 ListItemComponent{ 类型:“imageItem” 容器{ id:publicimageItem ...... ...... 图像按钮{ defaultImageSource:“asset:///defaultimg.png" 按图像源:asset:///pressedimg.png" 再次点击:{ var new_page=publicimageItem.ListItem.view.nextpage.

单击列表视图按钮时,我需要按下一个页面。我已经尝试了下面的编码,但它不工作

ListItemComponent{
类型:“imageItem”
容器{
id:publicimageItem
......
......
图像按钮{
defaultImageSource:“asset:///defaultimg.png"
按图像源:asset:///pressedimg.png" 
再次点击:{
var new_page=publicimageItem.ListItem.view.nextpage.createObject();
publicimageItem.ListItem.view.navigationPane.push(新页面);
}
附件:[
组件定义{
id:下一页
来源:“NextPage.qml”
}
]
}//图像按钮
}//容器
}//列表视图

当我在listview外部尝试时,它将毫无问题地转到下一页。

建议
nextpage.qml
的路径以及页面本身有效且设置正确,我建议将
onClicked()
中的代码更改为以下内容:

var new_page = nextpage.createObject();
navigationPane.push(new_page);
请确保此处可访问navigationPane。如前所述,启用控制台日志记录(或使用终端slog2info实用程序)可能是一个好主意。通过这种方式,您将能够看到您的代码发生了什么以及原因

作为另一种变体,如果您希望通过与整个listitem(而不是其中的特定小部件)交互来导航到其他页面,则需要将相同的代码放入
onTriggered()
slot:

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    

建议指向
NextPage.qml
的路径以及页面本身有效且设置正确,我建议将
onClicked()
中的代码更改为以下内容:

var new_page = nextpage.createObject();
navigationPane.push(new_page);
请确保此处可访问navigationPane。如前所述,启用控制台日志记录(或使用终端slog2info实用程序)可能是一个好主意。通过这种方式,您将能够看到您的代码发生了什么以及原因

作为另一种变体,如果您希望通过与整个listitem(而不是其中的特定小部件)交互来导航到其他页面,则需要将相同的代码放入
onTriggered()
slot:

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    

另一种最简单的方法是使用下面的代码将对象存储到全局变量,我觉得这很好

     onCreationCompleted: {
     Qt.tabbedPane = tabbedPane;
     Qt.homeTab = homeTab;
    }   
在这里,我在页面创建完成时将tabbedPane存储在全局变量Qt.tabbedPane中。现在我可以使用Qt.tabbedPane从ListItemComponent访问它

在您的情况下,将导航窗格存储到Qt.navigationPane=NavigationId,然后尝试以Qt.navigationPane的形式从ListItemComponent访问它

希望这会有帮助


希望有帮助。

使用下面的代码将对象存储到全局变量的另一种最简单的方法,我可以使用它

     onCreationCompleted: {
     Qt.tabbedPane = tabbedPane;
     Qt.homeTab = homeTab;
    }   
在这里,我在页面创建完成时将tabbedPane存储在全局变量Qt.tabbedPane中。现在我可以使用Qt.tabbedPane从ListItemComponent访问它

在您的情况下,将导航窗格存储到Qt.navigationPane=NavigationId,然后尝试以Qt.navigationPane的形式从ListItemComponent访问它

希望这会有帮助


希望有帮助。

首先,将此处()的代码添加到main.cpp,以便在控制台中获得输出。这对于添加调试语句和显示错误非常有用。它还有助于测试/调试在try中包装javascript代码块。捕获错误并将其输出到控制台(如果您已实现barry的上述建议)。通常,“找不到对象”之类的错误不会输出错误,只是默默地失败。您找到解决方案了吗?首先,将此处的代码()添加到main.cpp,以便在控制台中获得输出。这对于添加调试语句和显示错误非常有用。它还有助于测试/调试在try中包装javascript代码块。捕获错误并将其输出到控制台(如果您已实现barry的上述建议)。通常,“未找到对象”之类的错误不会输出错误,只是默默地失败。您找到解决方案了吗?您好,如果我使用OnTigger,是否有任何方法可以执行单键单击操作?整个列表正在单击,而不是需要单击单键单击事件感谢您所说的“整个列表正在单击”是什么意思?根据该方法,当用户触发列表项时发出信号。如果要处理列表项中某个小部件的特定信号,则需要绑定到该小部件的适当信号,即
onClicked()
在使用
按钮的情况下
等会出现以下问题:引用错误:找不到变量:navigationPane
navigationPane
navigationPane
对象实例的id。您可以将其更改为分配给您的
导航窗格
对象id的任何内容。请参见此处的用法示例-嗨,如果我使用OnTigger,是否有任何方法可以进行单键单击整个列表正在单击,而不是需要单击单键单击事件感谢您所说的“整个列表正在单击”是什么意思?根据该方法,当用户触发列表项时发出信号。如果要处理列表项中某个小部件的特定信号,则需要绑定到该小部件的适当信号,即
onClicked()
在使用
按钮的情况下
等会出现以下问题:引用错误:找不到变量:navigationPane
navigationPane
navigationPane
对象实例的id。您可以将其更改为分配给您的
导航窗格
对象id的任何内容。请参见此处的用法示例-