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
// ...
}
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?
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 .