Как загрузить второй файл .qml в каскад BB 10

Я хочу, чтобы для кнопки (в one.qml) нажмите загрузить отдельный файл .cpp (second.cpp< /em>) и в этом файле .cpp вызовите файл second.qml. Как это сделать с помощью кода BB10 C++. Но без использования кодирования QML. Я сделал это с кодированием QML, НО это НЕ то, что я хочу.

Если сравнивать с Android-разработкой, то из одного Activity мы вызываем второе Activity с отдельным xml-файлом. Это именно то, что я хочу проверить здесь, в BB10.


person AnujAroshA    schedule 09.08.2013    source источник


Ответы (1)


Чтобы загрузить новый документ QML из C++, вы должны использовать что-то вроде этого:

bb::cascades::QmlDocument *qml = bb::cascades::QmlDocument::create("asset:///yourSecondFile.qml");
// You can define properties for your page
qml->setContextProperty("_propertyName", yourObject);
bb::cascades::Page *secondPage = qml->createRootObject();

См. документацию QmlDocument для полного объяснения того, что вы можете сделать с вашим документом.

Итак, теперь у вас есть Page (или любой другой компонент). Вам нужно будет отправить его, например, на NavigationPane. Вы можете сделать это следующим образом:

// Create a back button
bb::cascades::ActionItem* backAction = bb::cascades::ActionItem::create()
    .title(tr("Previous page"))
    .imageSource(QUrl("asset:///back.png"))
    .onTriggered(navigationPane, SLOT(pop())
);

// Push the page
navigationPane->push(page
    .paneProperties(bb::cascades::NavigationPaneProperties::create()
        .backButton(backAction)
    )
);
person Marc Plano-Lesay    schedule 09.08.2013
comment
Да, это работает. Я тоже не хочу использовать ActionItem. Я хотел сделать это для события нажатия кнопки. Итак, что я сделал, так это то, что внутри события click я вызываю функцию в своем коде C++, которая вызывает мой второй конструктор исходного файла. Внутри этого конструктора я вызываю ваш первый фрагмент кода. Потом заработало после небольших изменений. Спасибо. - person AnujAroshA; 09.08.2013