Получить активную навигационную страницу в приложении Blackberry 10

0

Я создаю приложение с QML/c++ первой страницей с навигационной панелью, созданной с помощью qml. Тогда вторая страница также является qml. При нажатии кнопки первой страницы вызывается функция c++ и анализируется вторая страница, и ей нужно нажать на страницу навигации. то, что я делаю в кнопочном нажатии, упоминается ниже.

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

Но когда нажатие выполняется, приложение автоматически прекращает выдавать ошибку.

консольный вывод (создана домашняя страница

Процесс 304619722 (Sampleapp2) завершен код SIGSEGV = 1 fltno = 11 ip = 78f0a210 (/base/usr/lib/libbbascasc.so.1@_ZNK2bb8cascades14NavigationPane7indexOfEPNS0_4PageE+0x707) mapaddr = 0010a210. ref = 00000010)

Я разбираю указатель навигационной страницы ко второму конструктору файла c++ и назначая его переменной this-> navpange.

Должен ли я сделать панель навигации открытой в первом заголовке c++? если да, то как это сделать?

В любом случае я могу получить активную навигационную панель запуска приложения из второго файла c++ без его разбора?

Заранее спасибо :-)

Мне нужно сделать навигацию

Теги:
qt
blackberry-10
blackberry-cascades
blackberry

2 ответа

0

Земей с форума Blackberry ответил мне. Кредит идет ему.

Я думаю, что проще всего передать NavigationPane в качестве параметра из QML:

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

В QML:

_app.function(navPaneId)

Но это получило ошибку. Земи снова исправил это.

Я попытался воспроизвести это, а также получил то же сообщение об ошибке. Кажется, что NavigationPane неправильно зарегистрирован в Cascades.

Добавление 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);
}
0

Из приведенного кода я предполагаю, что главная страница является унифицированной.

  • 0
    Домашняя страница не первая страница приложения. Это вторая страница. Первая страница входа отображается. Подскажите, пожалуйста, как это исправить? Спасибо за упокоение Конрада.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню