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

Я делаю приложение с 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/libbbcascades.so.1@_ZNK2bb8cascades14NavigationPane7indexOfEPNS0_4PageE+0d10a0. 07070). исх = 00000010
)

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

Должен ли я сделать панель навигации общедоступной в первом заголовке файла C ++? если так как это сделать?

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

Заранее спасибо 🙂

Должен ли я сделать навигацию

0

Решение

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

0

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

Земы с ежевичных форумов ответили мне. Кредит идет к нему.

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

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

В QML:

_app.function(navPaneId)

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

Я попытался воспроизвести это, а также получил то же сообщение об ошибке. Похоже, что 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);
}
0

По вопросам рекламы [email protected]