導航欄 TabBar
- 提供基於選項卡的導航模型,允許使用者在不同的檢視或子任務之間切換。用TabButton控制元件填充,可以理解為button按鈕控制元件。一般會與佈局或容器控制元件一起使用
- 屬性
contentHeight : 儲存內容的高度。它用於計算導航欄的總隱式高度
contentWidth : 儲存內容的寬度。它用於計算導航欄的總隱式寬度
position : 儲存導航欄的位置 - 附加屬性
TabBar.index:[只讀],儲存TabBar中每個導航欄按鈕的索引
TabBar.position:[只讀],保留導航欄的位置
TabBar.tabBar:[只讀],包含管理此選項卡按鈕的選項卡欄
與佈局管理器使用
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
Window {
id: root
visible: true
width: 640
height: 480
title: qsTr("test")
color:"lightgray"
TabBar { //點選相應的按鈕實現切換
id: bar
width: parent.width
TabButton {
text: qsTr("First")
}
TabButton {
text: qsTr("Second")
}
TabButton {
text: qsTr("Third")
}
}
StackLayout { //棧佈局管理器
anchors.centerIn: parent
width: parent.width
currentIndex: bar.currentIndex //當前檢視的索引
Item {
Text {
anchors.centerIn: parent
text: qsTr("First")
}
}
Item {
Text {
anchors.centerIn: parent
text: qsTr("Second")
}
}
Item {
Text {
anchors.centerIn: parent
text: qsTr("Third")
}
}
}
}
與容器控制元件 SwipeView 結合使用
- 滑動SwipeView時,當前索引currentIndex改變,使得滑動頁面可以和標題欄的選擇一致
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("Hello World")
SwipeView {
id: view
currentIndex: 0
anchors.fill: parent
orientation: Qt.Horizontal
interactive: true
Rectangle {
id: firstPage
color: "purple"
Text {
text: qsTr("First")
anchors.centerIn: parent
font.pixelSize: 25
}
}
Rectangle {
id: secondPage
color: "blue"
Text {
text: qsTr("Second")
anchors.centerIn: parent
font.pixelSize: 25
}
}
Rectangle {
id: thirdPage
color: "green"
Text {
text: qsTr("Third")
anchors.centerIn: parent
font.pixelSize: 25
}
}
}
header: TabBar { //視窗標題 是 ApplicationWindow 的屬性
id: headertabBar;
currentIndex:view.currentIndex
TabButton {
text: qsTr("header one");
}
TabButton {
text: qsTr("header two")
}
TabButton {
text: qsTr("header three")
}
}
}
工具欄 ToolBar
- 用於程式的上下文控制,例如導航按鈕和搜尋按鈕
- 屬性只有一個
position:儲存工具欄的位置
import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
ApplicationWindow {
visible: true
width: 640
height: 480
title: qsTr("ToolBar")
color: "lightgray"
header: ToolBar { //視窗標題欄設定ToolBar
RowLayout {
anchors.fill: parent
ToolButton { //此按鈕是關聯上下文
text: qsTr("‹") //回退按鈕
onClicked: stack.pop()
}
Label {
text: "Two" //標題名
horizontalAlignment: Qt.AlignHCenter
verticalAlignment: Qt.AlignVCenter
Layout.fillWidth: true
}
ToolButton {
id: fileButton;
text: qsTr("⋮") //選單隱藏按鈕
onClicked: menu.open()
}
}
}
Menu {
id: menu
x: fileButton.x;
y: fileButton.y;
Action { text: "Cut" }
Action { text: "Copy" }
Action { text: "Paste" }
}
StackView {
id: stack
anchors.fill: parent
}
}