Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ BlackBerry 10 Cascades-如何导航到另一个CPP类_C++_Qt_Blackberry 10_Blackberry Cascades - Fatal编程技术网

C++ BlackBerry 10 Cascades-如何导航到另一个CPP类

C++ BlackBerry 10 Cascades-如何导航到另一个CPP类,c++,qt,blackberry-10,blackberry-cascades,C++,Qt,Blackberry 10,Blackberry Cascades,在我的BlackBerry 10 Cascades应用程序中有三个不同的cpp类 Home.cpp FirstPage.cpp SecondPage.cpp 主页有两个按钮,用户可以通过它们导航到其余页面。此页面还有NavigationPane,我可以通过它导航到其余页面 FrestPoad在QML中创建了UI,而第二页只有在C++中创建的UI。 如何在单击按钮时导航到这些页面。我知道信号和插槽机制,但不知道如何创建这些类的对象并将它们推送到导航窗格对象 有助于 ,您可以在C++中创建导航窗格

在我的BlackBerry 10 Cascades应用程序中有三个不同的cpp类

  • Home.cpp
  • FirstPage.cpp
  • SecondPage.cpp
  • 主页有两个按钮,用户可以通过它们导航到其余页面。此页面还有NavigationPane,我可以通过它导航到其余页面

    FrestPoad在QML中创建了UI,而第二页只有在C++中创建的UI。 如何在单击按钮时导航到这些页面。我知道信号和插槽机制,但不知道如何创建这些类的对象并将它们推送到导航窗格对象


    <代码>有助于

    ,您可以在C++中创建导航窗格,在QML中实现UI。我正在这样做。我有一个类,它启动我的应用程序并创建我的导航窗格(从qml文件加载页面)

    接下来,当您单击按钮“Page 1”时,您可以从C++调用一个方法(参见文档中如何将C++对象暴露为QML),并且在C++中,作为导航窗格的子,启动一个新页面,如我建议的

    NewPage::NewPage(QObject *parent, bb::cascades::NavigationPane *navigationPane)
         : QObject(parent)
    
        {
            m_parent = parent;
    
            m_navigationPane = navigationPane;
    
            m_qml = bb::cascades::QmlDocument::create("asset:///qml/UserInput/newpage.qml").parent(this);
    
            initUI(); //Were you should initialize all of your UI
    
            m_page = m_qml->createRootObject<bb::cascades::Page>();
            m_page->setObjectName("PageName");
            m_navigationPane->push(m_page);
    
        }
    
    对于每个QML文件,很容易为不同的C++对象公开。我使用MVC模型,对于每个qml文件,我都有一个控制器和一个模型。该模型包含qml中需要的所有属性。因此,从中央C++对象,当我调用新的NeXPage()时,我将指针发送到导航窗格,这样我可以推页然后弹出它。在该控制器中,您应该为其提供一个模型和一个Getter,然后在创建如下页面之前将控制器公开给qml:

    m_qml->setContextProperty("newPageController", this);
    
    在qml中,您可以使用“newPageController”的名称访问此控制器。qml可用的方法必须使用Q_INVOKABLE进行实例化。请参考这一点,这将有助于我确信:


    如果您想启动另一个页面,请从C++调用一个方法,创建页面,然后将新对象暴露给新的QML。

    嘿,我可以创建单独的CPP类,它将处理每个QML页面的操作。如果是这样,当导航页面推送时,我如何将CPP类绑定到特定的QML?你是推着C++还是QML?如果您在C++中,可以将对象分配给每个页面并通过上下文属性传递它们。如果你是从qml推送页面,我想你可以使用loader类,但我不熟悉这种机制。你能简单介绍一下我如何用C++来做吗?如果我在C++中做了,那么我可以为每个设计的QML使用单独的C++类。我已经通过了BB提供的基于网络的培训,但仍然对如何为BB 10 appHey设计项目结构感到困惑。请再次参考我的评论。是的,我只通过C++处理导航。这对我有用。。谢谢
    m_qml->setContextProperty("newPageController", this);