2013-10-08 6 views
0

Je fais une application avec QML/C++ première page avec le volet de navigation est créé avec qml. Ensuite, la deuxième page est également qml. Sur une pression sur un bouton de la première page, une fonction C++ est invoquée et analysée sur la deuxième page et doit être poussée vers la page de navigation. ce que je fais dans la presse bouton est mentionné ci-dessous. Mais lorsque l'application est terminée, l'application se termine automatiquement en donnant une erreur.Obtenir la page de navigation active dans blackberry 10 app

sortie de la console

est (a créé une page d'accueil

304619722 Process (Sampleapp2) à terminaison code SIGSEGV = 1 fltno = 11 ip = 78f0a210 (/base/usr/lib/[email protected]_ZNK2bb8cascades14NavigationPane7indexOfEPNS0_4PageE+0x707) mapaddr = 0010a210 ref = 00000010 )

J'analyse le pointeur de la page de navigation au second constructeur de fichier C++ et l'affecte à une variable this-> navpange.

Dois-je rendre le volet de navigation public dans le premier en-tête du fichier C++? Dans l'affirmative, comment le faire?

Y at-il de toute façon je peux obtenir le volet de navigation active de l'application en cours d'exécution du deuxième fichier C++ sans l'analyser?

Merci à l'avance :-)

Dois-je faire de la navigation

Répondre

0

À partir du code donné, je suppose que la page d'accueil est pas initialisée.

+0

Page d'accueil n'est pas la première page de l'application. C'est la deuxième page. La première page de connexion est affichée. Pouvez-vous s'il vous plaît me dire comment résoudre ce problème? Merci pour le respose Konrad. –

0

Zemy de blackberry forums m'a répondu. Le crédit va à lui.

Je pense que le plus simple est de passer le NavigationPane comme paramètre de QML:

Q_INVOKABLE void function(NavigationPane *pane); 
... 
pane->push(homepage); 

En QML:

_app.function(navPaneId) 

Mais cela a une erreur. Zemy l'a de nouveau réparé.

J'ai essayé de reproduire cela et j'ai également reçu le même message d'erreur. Il semble que NavigationPane n'est pas correctement enregistré dans Cascades.

Ajout qmlRegisterType() le fixe:

ApplicationUI::ApplicationUI(bb::cascades::Application *app) : 
     QObject(app) 
{ 
    // prepare the localization 
    m_pTranslator = new QTranslator(this); 
    m_pLocaleHandler = new LocaleHandler(this); 
    if(!QObject::connect(m_pLocaleHandler, SIGNAL(systemLanguageChanged()), this, SLOT(onSystemLanguageChanged()))) { 
     // This is an abnormal situation! Something went wrong! 
     // Add own code to recover here 
     qWarning() << "Recovering from a failed connect()"; 
    } 
    // initial load 
    onSystemLanguageChanged(); 

    //-------------------------------------- 
    qmlRegisterType<NavigationPane>(); <---------------- ADDED 
    //-------------------------------------- 

    // Create scene document from main.qml asset, the parent is set 
    // to ensure the document gets destroyed properly at shut down. 
    QmlDocument *qml = QmlDocument::create("asset:///main.qml").parent(this); 
    qml->setContextProperty("_app", this); 

    // Create root object for the UI 
    AbstractPane *root = qml->createRootObject<AbstractPane>(); 

    // Set created root object as the application scene 
    app->setScene(root); 
}