도움이 될 것입니다. 나는 그것을하고있다. 내 응용 프로그램을 시작하고 내 탐색 창 (qml 파일에서 페이지로드)을 만드는 클래스가 있습니다.
다음으로 "Page1"버튼을 클릭하면 C++에서 메서드를 호출 할 수 있습니다 (설명서에서 C++ 객체를 QML로 노출하는 방법 참조). C++에서는 탐색 페이지의 자식으로 새 페이지를 시작합니다. 이 페이지는 화면에 BACK 버튼을 추가
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);
}
아래에 제시하고 해당 버튼을 클릭하면, 신호 popFinished(bb::cascades::Page* page)
는 emmited된다. (당신이 navigationpane를 만들 경우) 당신은 내가했던 것처럼 당신의 메인 페이지에 슬롯이 신호를 연결할 수 있습니다
void MainPage::popFinished(bb::cascades::Page* page) {
delete page;
}
각 QML 파일을 다른 C++ 객체에 대한 노출 쉽다. MVC 모델을 사용합니다. 각 qml 파일마다 컨트롤러와 모델이 있습니다. 모델에는 qml에 필요한 모든 특성이 들어 있습니다. 그래서 중앙 C++ 객체에서 새 NewPage()를 호출하면 탐색 창에 포인터를 보내고 있으므로 페이지를 밀어서 나중에 팝할 수 있습니다. 이 컨트롤러에서 당신은 모델과의 게터가 있어야하고,이 같은 페이지를 작성하기 전에 다음 QML에 컨트롤러를 노출 :
은 QML에서 후기
m_qml->setContextProperty("newPageController", this);
당신의 이름이 컨트롤러에 액세스 할 수 있습니다 " newPageController "입니다. 당신이 다른 페이지를 시작 ++ C에서 메소드를 호출 할 경우
가
http://developer.blackberry.com/native/documentation/cascades/dev/integrating_cpp_qml/
그런 다음를 만듭니다 QML 사용할 수있는 방법은 내가 확신 도움이 될 것입니다,이 참조하십시오 Q_INVOKABLE 인스턴스화되어야 할 것이다 새 개체를 새 qml에 노출합니다.
안녕하세요 각 qml 페이지의 작업을 처리 할 별도의 CPP 클래스를 만들 수 있습니까? 그렇다면 탐색 페이지가 누를 때 특정 qml과 CPP 클래스를 어떻게 바인딩 할 수 있습니까? – silwar
C++ 또는 QML에서 페이지를 밀고 있습니까? C++에있는 경우 각 페이지에 객체를 할당하고 컨텍스트 속성을 통해 전달할 수 있습니다. qml에서 페이지를 푸시하는 경우 로더 클래스를 사용할 수 있다고 생각하지만이 메커니즘에 익숙하지 않습니다. –
안녕하세요 Filipe, 저는 BB 10 개발을 처음 접했습니다. C++에서 어떻게 할 수 있습니까? 나는 C++에서 그렇게한다면 혼란 스럽다. 그렇다면 각 QML에 대해 별도의 C++ 클래스를 사용할 수있다.BB에서 제공하는 웹 기반 교육을 통과했지만 여전히 BB 10 앱의 프로젝트 구조를 디자인하는 방법에 대해 혼란스러워했습니다. – silwar