QT實(shí)現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法
TabBar
在實(shí)際開發(fā)中導(dǎo)航欄是必不可少的控件,QtQuick Controls控件中可以使用TabBar來做導(dǎo)航欄,原始的導(dǎo)航欄是橫向的,查找了其屬性后發(fā)現(xiàn)無法直接設(shè)置為縱向的。本節(jié)將給小伙伴們介紹一種非常簡單的實(shí)現(xiàn)實(shí)現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法。原始導(dǎo)航欄如下圖:

屬性列表
允許用戶在不同的視圖或子任務(wù)之間切換。標(biāo)簽欄提供了一個(gè)基于標(biāo)簽的導(dǎo)航模型。TabBar由TabButton控件填充,可以與任何提供currentIndex -屬性的布局或容器控件一起使用,如StackLayout或SwipeView。
| 屬性 | 類型 | 描述 |
|---|---|---|
| contentHeight | real | 此屬性保存內(nèi)容高度。它用于計(jì)算選項(xiàng)卡欄的隱式總高度。 |
| contentWidth | real | 此屬性保存內(nèi)容寬度。它用于計(jì)算選項(xiàng)卡欄的隱式總寬度。 |
| position | enumeration | 此屬性保存選項(xiàng)卡欄的位置。 TabBar.HeaderTabBar.Footer |
| 附加屬性 | 類型 | 描述 |
|---|---|---|
| index | int | 這個(gè)附加屬性保存TabBar中每個(gè)選項(xiàng)卡按鈕的索引。它被附加到TabBar的每個(gè)選項(xiàng)卡按鈕上。 |
| position | enumeration | 這個(gè)附加屬性保存選項(xiàng)卡欄的位置。它被附加到TabBar的每個(gè)選項(xiàng)卡按鈕上。 TabBar.HeaderTabBar.Footer |
| tabBar | TabBar | 此附加屬性保存管理此選項(xiàng)卡按鈕的選項(xiàng)卡欄。它被附加到TabBar的每個(gè)選項(xiàng)卡按鈕上。 |
示例代碼
TabBar {
id: bar
width: parent.width
TabButton {
text: qsTr("Home")
}
TabButton {
text: qsTr("Discover")
}
TabButton {
text: qsTr("Activity")
}
}
StackLayout {
width: parent.width
currentIndex: bar.currentIndex
Item {
id: homeTab
}
Item {
id: discoverTab
}
Item {
id: activityTab
}
}在TabBar中添加三個(gè)TabButton,點(diǎn)擊TabButton可以實(shí)現(xiàn)對(duì)StackLayout中相應(yīng)的Item的切換。
側(cè)邊導(dǎo)航欄
從position屬性中可以看出,TabBar只能直接設(shè)置為頂部和底部,無法直接應(yīng)用成側(cè)邊導(dǎo)航欄。此時(shí),需要將 TabBar和TabButton的大小和位置進(jìn)行調(diào)整,即可實(shí)現(xiàn)側(cè)邊導(dǎo)航欄。

修改代碼
TabBar寬度影響自身和內(nèi)部包含的TabButton的寬度。橫向排列時(shí),TabBar的寬度等于三個(gè)TabButton的寬度;縱向排列時(shí),TabBar的寬度等于一個(gè)TabButton的寬度。
其次需要改變TabButton的寬度,高度以及排列的位置。橫向排列時(shí),TabButton的寬度大于高度;縱向排列時(shí),為了美觀,使TabButton的寬度小于高度。將所有TabButton都設(shè)置為首位相連,即第一個(gè)TabButton的bottom底部就是第二個(gè)TabButton的頂部。
TabBar {
id: bar
width: firstBtn.width
TabButton {
id: firstBtn
text: qsTr("Home")
width: root.width/8
height: root.height/3
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
}
TabButton {
id: secondBtn
text: qsTr("Discover")
width: root.width/8
height: root.height/3
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: firstBtn.bottom
}
TabButton {
id: thirdBtn
text: qsTr("Activity")
width: root.width/8
height: root.height/3
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: secondBtn.bottom
}
}總結(jié)
以上就是實(shí)現(xiàn)實(shí)現(xiàn)QML側(cè)邊導(dǎo)航欄的最簡方法,除此之外還可以自定義繪制導(dǎo)航欄控件,不過比起本節(jié)介紹的方法較為復(fù)雜,不如這種方法來得快捷。更多相關(guān)QT QML側(cè)邊導(dǎo)航欄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
VScode配置C++運(yùn)行環(huán)境的完整步驟
這篇文章主要給大家介紹了關(guān)于VScode配置C++運(yùn)行環(huán)境的完整步驟,文中通過圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
C語言深入探究sizeof與整型數(shù)據(jù)存儲(chǔ)及數(shù)據(jù)類型取值范圍
在main函數(shù)中,sizeof是可以正常工作的,但是在自定義函數(shù)中就不可以了。所以本文將為大家詳細(xì)講解一下關(guān)鍵字sizeof、整型數(shù)據(jù)存儲(chǔ)深入、數(shù)據(jù)類型取值范圍深入2022-07-07
C++實(shí)現(xiàn)將輸入復(fù)制到輸出的方法
這篇文章主要介紹了C++實(shí)現(xiàn)將輸入復(fù)制到輸出的方法,實(shí)例分析了C++字符串轉(zhuǎn)換及輸入輸出操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
C++實(shí)現(xiàn)LeetCode(207.課程清單)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(207.課程清單),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08
C語言實(shí)現(xiàn)一個(gè)多線程委托模型的示例詳解
這篇文章主要介紹了C語言實(shí)現(xiàn)一個(gè)多線程委托模型,這就是一個(gè)使用C語言實(shí)現(xiàn)多線程委托模型的例子,其中包含boss線程和worker線程,可以處理工作線程的異常情況,需要的朋友可以參考下2023-06-06
C++?std::array實(shí)現(xiàn)編譯器排序
這篇文章主要介紹了C++?std::array實(shí)現(xiàn)編譯器排序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06

