web-dev-qa-db-fra.com

Comment masquer l'en-tête du composant Onglets

J'écris une application à l'aide du SDK Ubuntu et j'ai un composant PageStack dans un composant Tabs.

Lorsque je charge l'une des pages à l'intérieur du PageStack, tout fonctionne correctement et dans l'en-tête, le nom de l'onglet en cours est affiché. Cependant, si, lorsque la page est ouverte au lieu de cliquer sur le bouton Précédent de la barre d'outils, je choisis un autre onglet, la barre d'outils est totalement perturbée et le bouton Précédent n'apparaît plus.

Existe-t-il un moyen de rendre mes pages en plein écran, de sorte que l'en-tête avec le nom de l'onglet en cours ne soit pas affiché (et ne puisse donc pas être tapé), ou mieux, pour afficher le titre de la page en cours dans l'en-tête au lieu de le titre de l'onglet parent?

Tabs {
    id: tabs

    Tab {
            objectName: "tabQreator"
            title: i18n.tr("Create")
            page: CreatorPage {
                id: pageCreator
            }
    }

    // ...
}

Et sur CreatorPage.qml:

PageStack {
    id: pageStack

    anchors {
        fill: parent
    }

    Component.onCompleted: Push(pageRoot)

    Page {
        id: somePage

        // Toolbar definition here...
    }

    Page {
        id: pageRoot
        title: i18n.tr("The root page")
        visible: false
        // ...

    }
5
David Planella

Le mérite en revient à Szymon Waliczek, qui a répondu à cette question sur G +. L'extrait suivant masque l'en-tête sur toutes les pages, à l'exception de la page racine.

PageStack {
    id: pageStack

    onCurrentPageChanged: {
        if(pageStack.currentPage === pageRoot) {
            // mainview is the MainView's id
            mainview.header.visible = true
            mainview.header.show()
        } else {
            mainview.header.hide()
            mainview.header.visible = false
        };
    }
}

Cela fonctionne comme un charme, même si la barre d’outils reste confuse et apparaît sur la page racine, où elle n’est même pas définie.

Avez-vous des idées pour affiner cela et au lieu de cacher l'en-tête, affichez le titre de la page en cours au lieu de celui de l'onglet parent?

3
David Planella

En fait, bien que l’autre réponse soit valable pour la question initiale, la meilleure solution consiste à l'inverser et à imbriquer la Tabs dans un PageStack, comme décrit dans cette autre question .

1
David Planella