Реализация кнопки назад на bb10

У меня есть одна панель навигации, и я отключил кнопку "Назад" в main.qml, однако я хочу снова отобразить кнопку "Назад" в некоторой части приложения. Как мне это реализовать? вот мой cpp

pane = qml->createRootObject<NavigationPane>();

    // Set created root object as the application scene
    app->setScene(pane);

    qml->setContextProperty("cppObj", this);

}

void ApplicationUI::onLoginClicked() {
    // create scene document from buttonclicked.qml asset
    // set parent to created document to ensure it exists for the whole application lifetime
    QmlDocument *qml = QmlDocument::create("asset:///projects.qml").parent(this);
    qml->setContextProperty("cppObj", this);
    Page* root = qml->createRootObject<Page>();
    pane->push(root);
}

void ApplicationUI::onAddClicked() {
    // create scene document from buttonclicked.qml asset
    // set parent to created document to ensure it exists for the whole application lifetime
    QmlDocument *qml = QmlDocument::create("asset:///addprojects.qml").parent(this);
    Page* root = qml->createRootObject<Page>();
    pane->push(root);
}

и вот мой главный, где я отключил кнопку назад

NavigationPane {
    backButtonsVisible: false }

Как сделать кнопку "Назад" активной в каком-то разделе приложения?

1 ответ

Допустим, у вас есть следующий код:

Стартовая страница

import bb.cascades 1.0

NavigationPane {
    id: navPane

    Page {
        Container {
            horizontalAlignment: HorizontalAlignment.Fill
            verticalAlignment: VerticalAlignment.Fill
            layout: DockLayout {
            }
            Button {
                horizontalAlignment: HorizontalAlignment.Center
                verticalAlignment: VerticalAlignment.Center
                text: "Next Page"
                onClicked: {
                    var nextPage = page.createObject();
                    navPane.push(nextPage);
                }
            }
        }
    }

    attachedObjects: [
        ComponentDefinition {
            id: page
            source: "NextPage.qml"
        }
    ]
}

Следующая Страница:

import bb.cascades 1.0

Page {
    // disables backButton (not peeking)
    paneProperties: NavigationPaneProperties {
            backButton: ActionItem {
            enabled: false
        }
    }

    // [0]
    Container {
        horizontalAlignment: HorizontalAlignment.Fill
        verticalAlignment: VerticalAlignment.Fill
        layout: DockLayout {
        }
        Button {
            horizontalAlignment: HorizontalAlignment.Center
            verticalAlignment: VerticalAlignment.Center
            text: "Prev page"
            onClicked: {
                var page = navPane.pop();
                if (page)
                    page.destroy();
            }
        }
    } // [0]

    // hides navigation bar
    onCreationCompleted: {
        navPane.backButtonsVisible = false;
    }
}

Тогда вы можете полностью отключить backButton с этим кодом в NextPage.qml

onCreationCompleted: {
    navPane.backButtonsVisible = false;
}

В качестве альтернативы, если вы хотите, чтобы панель навигации была видимой, а кнопка "Назад" была отключена, используйте следующее в той же NextPage.qml файл:

paneProperties: NavigationPaneProperties {
    backButton: ActionItem {
        enabled: false
    }
}

Также не забывайте о peekEnabled имущество. Используя функцию быстрого просмотра BB10, пользователь может перемещаться между страницами одного и того же человека, перемещая палец, не касаясь каких-либо кнопок на экране.

Это можно сделать аналогичным образом:

onCreationCompleted: {
    navPane.peekEnabled = false;
}

Надеюсь, поможет.

Другие вопросы по тегам