Change header icons changing page
-
Goodmorning,
I've realized inside the ApplicationView, a stackView so that I could change page. Aside that I'd like to add a header that changes its content according to the selected page. Consider that inside the header, I have some icons that are the same, others can change function when pressed, too.
What is the best option to implement such thing?Thank you in advanced.
-
Goodmorning,
I've realized inside the ApplicationView, a stackView so that I could change page. Aside that I'd like to add a header that changes its content according to the selected page. Consider that inside the header, I have some icons that are the same, others can change function when pressed, too.
What is the best option to implement such thing?Thank you in advanced.
The usual and flexible way to do that is a data driven solution.
Don't add a button that will be added in the header, but define an action which the header will display how it wants.Create a custom page type with a
property list<Actions> actions
(a QQC2Action
can have a icon defined in it) and the display this actions with aRow
+Repeater
in the header.MyPage { title: "My Test Page" actions: [ Action { icon: /* ... */ onTriggered: doStuff() } ] }
MyHeader { property MyPage currentPage Text { anchors.centerIn: parent text: currentPage ? currentPage.title : "" } Row { anchors.right: parent.right Repeater { model: currentPage ? currentPage.actions delegate: MyActionDelegate { // display the icon in it, call the action.triggered method in the onClicked, ... } } }
Quick and dirty positionning, do better than that. But the idea is here.
You can add more feature as needed.
Add a visible property in the action and follow it in the delegate, respect the enabled property too.
Add a back button in the header to pop the stackview. You could add a way for the currentPage to prevent going back, et cetera, et cetera.