add styled tab view
This commit is contained in:
parent
24930ef2e0
commit
810d43e497
4 changed files with 107 additions and 0 deletions
7
components/TabView/StyledTab.qml
Normal file
7
components/TabView/StyledTab.qml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
import QtQuick
|
||||
|
||||
Item {
|
||||
property string title
|
||||
property string icon
|
||||
default property Component content
|
||||
}
|
||||
65
components/TabView/StyledTabView.qml
Normal file
65
components/TabView/StyledTabView.qml
Normal file
|
|
@ -0,0 +1,65 @@
|
|||
pragma ComponentBehavior: Bound
|
||||
|
||||
import qs.components
|
||||
import QtQuick
|
||||
import QtQuick.Controls
|
||||
|
||||
Item {
|
||||
id: root
|
||||
|
||||
default property list<StyledTab> tabs
|
||||
|
||||
anchors.fill: parent
|
||||
|
||||
Container {
|
||||
id: tabs
|
||||
|
||||
anchors.top: parent.top
|
||||
anchors.left: parent.left
|
||||
|
||||
implicitHeight: 30
|
||||
|
||||
anchors.bottom: view.top
|
||||
anchors.right: parent.right
|
||||
|
||||
contentItem: ListView {
|
||||
model: tabs.contentModel
|
||||
snapMode: ListView.SnapOneItem
|
||||
orientation: ListView.Horizontal
|
||||
}
|
||||
|
||||
Repeater {
|
||||
model: root.tabs
|
||||
delegate: StyledButton {
|
||||
required property var modelData
|
||||
required property var index
|
||||
|
||||
text: modelData.title
|
||||
onClicked: tabs.setCurrentIndex(index)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
SwipeView {
|
||||
id: view
|
||||
|
||||
orientation: Qt.Horizontal
|
||||
|
||||
currentIndex: tabs.currentIndex
|
||||
|
||||
anchors.right: parent.right
|
||||
anchors.bottom: parent.bottom
|
||||
|
||||
anchors.top: tabs.bottom
|
||||
anchors.left: parent.left
|
||||
|
||||
Repeater {
|
||||
model: root.tabs
|
||||
Loader {
|
||||
required property var modelData
|
||||
active: SwipeView.isCurrentItem || SwipeView.isNextItem || SwipeView.isPreviousItem
|
||||
sourceComponent: modelData.content
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue