2013-10-08 4 views
0

qml로 탐색 창이있는 첫 번째 페이지가 QML로 작성됩니다. 두 번째 페이지도 qml입니다. 첫 페이지의 버튼을 누르면 C++ 함수가 호출되고 두 번째 페이지가 구문 분석되어 탐색 페이지로 이동해야합니다. 버튼 누르기에서 내가하고있는 일은 아래에 나와 있습니다.blackberry 10의 활성 탐색 메뉴 가져 오기

QmlDocument *qml = QmlDocument::create("asset:///home.qml"); 
    if (!qml->hasErrors()) { 
     Page *homepage = qml->createRootObject<Page>(); 
     if (homepage) { 
      qDebug() <<"created a homepage"; 
      navPane->push(homepage); 
     }} 

그러나 푸시가 완료되면 응용 프로그램이 자동 종료되어 오류가 발생합니다.

콘솔 출력 (홈페이지를

프로세스 304,619,722 (Sampleapp2) SIGSEGV 종료 코드 = 1 fltno = 11 = IP 78f0a210 (/base/usr/lib/[email protected]_ZNK2bb8cascades14NavigationPane7indexOfEPNS0_4PageE+0x707) mapaddr을 만들어 = 0010a210.ref = 00000010 )

두 번째 C++ 파일 생성자에 대한 탐색 페이지 포인터를 구문 분석하고 this-> navpange 변수에 할당합니다.

첫 번째 C++ 파일 헤더에서 탐색 창을 공개해야합니까? 그렇다면 어떻게해야할까요?

어쨌든 내가 구문 분석하지 않고 두 번째 C++ 파일에서 실행중인 응용 프로그램의 활성 탐색 창을 얻을 수 있습니까?

:-) 사전에

덕분에 나는 주어진 코드에서 탐색

답변

0

을해야합니까, 나는 홈페이지가 초기화되지되어 있다고 가정합니다.

+0

홈페이지는 응용 프로그램의 첫 페이지가 아닙니다. 두 번째 페이지입니다. 첫 번째 로그인 페이지가 표시됩니다. 이 문제를 해결하는 방법을 알려주시겠습니까? Konrad에게 감사드립니다. –

0

블랙 베리 포럼의 제미가 나에게 답변했다. 신용은 그에게 간다. QML에서

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

: 내가 가장 쉬운 생각

은 QML에서 매개 변수로 NavigationPane을 전달하는 것입니다

_app.function(navPaneId) 

그러나 이것은 오류가 발생했습니다. Zemy는 다시 그것을 고쳤습니다.

나는 이것을 재현하려고 시도했지만 동일한 오류 메시지가 나타납니다. NavigationPane이 계단식에 제대로 등록되지 않은 것 같습니다.

은 추가 qmlRegisterType()를 고정 :

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); 
}