qt — интеграция с QML и C ++

Это мой первый пост на этом форуме, я только начал разработку BB 10, а также C ++, так как я человек Java. У меня возникли проблемы с интеграцией QML и C ++

Вот что я пытаюсь сделать:

У меня есть страница входа, при нажатии кнопки входа моя новая страница (которая является панелью навигации) открывается без каких-либо проблем, вот метод, который я использую

void Integration:penNextPage() {
printLog("-- open second page (a navigation pane ");
new SecondPageHndlr (appRefrence);
}

Вот что я делаю в классе SecondPageHndlr:

SecondPageHndlr.cpp
#include "SecondPageHndlr.hpp"#include "ThirdPageHndlr.hpp"#include <bb/cascades/Application>
#include <bb/cascades/QmlDocument>
#include <bb/cascades/AbstractPane>
#include <bb/cascades/NavigationPane>
#include <bb/cascades/Page>
#include <bb/cascades/Sheet>
#include <QObject>
#include <QIODevice>
#include <iostream.h>
#include <string.h>
#include <stdio.h>
using namespace bb::cascades;
SecondPageHndlr::SecondPageHndlr(bb::cascades::Application *app)
: QObject(app){
try{
QmlDocument *secondQml = QmlDocument::create("asset:///SecondPage.qml");
if (!secondQml->hasErrors()) {
NavigationPane* page = secondQml->createRootObject<NavigationPane>();
if (page)
{
printLog("second page view . page is not  null ");
//make this c++ file accessable from the dashboardviewn.qml
pane = page;
secondQml->setContextProperty("second", this );
app->setScene(page);
}
else
printLog("page is null ");
}
else
printLog("Error in second page view QML");
}
catch (std::exception& e)
{
printLog("-------- Exception");
std::cout << "Exception: " << e.what();
}
}
void SecondPageHndlr::showThirdScreen(){
printLog("-- open Third page (a navigation pane pushes a new page");
new ThirdPageHndlr (pane);
}
void SecondPageHndlr::printLog(const char *str){
cout <<"\n" << str ;
printf("" ,1);
fflush(stdout);
}

Теперь, когда с этого второго экрана я пытаюсь открыть третью страницу, она не будет работать вообще, пожалуйста, посмотрите код и скажите, что они делают неправильно

-1

Решение

Вы уже используете панель навигации, поэтому нет проблем с открытием других страниц. Смотрите следующий код qml

import bb.cascades 1.0

NavigationPane {
id: navigationPane
Page {
// page with a picture thumbnail
Container {
background: Color.Gray
layout: DockLayout {
}
Button {
horizontalAlignment: HorizontalAlignment.Center
verticalAlignment: VerticalAlignment.Center
text: qsTr("Show detail")
onClicked: {
// show detail page when the button is clicked
var page = secondPageDefinition.createObject();
console.debug("pushing detail " + page)
navigationPane.push(page);
}
attachedObjects: [
ComponentDefinition {
id: secondPageDefinition
source: "DetailsPage.qml"}
]
}
}
}

}

DetailsPage.qml

Page{
Label{
text: qsTr("Second Page")
}

}

0

Другие решения

Других решений пока нет …