服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - QT实现QML侧边导航栏的最简方法

QT实现QML侧边导航栏的最简方法

2022-12-24 15:50何名取 C/C++

本文主要介绍了QT实现QML侧边导航栏的最简方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

TabBar

在实际开发中导航栏是必不可少的控件,QtQuick Controls控件中可以使用TabBar来做导航栏,原始的导航栏是横向的,查找了其属性后发现无法直接设置为纵向的。本节将给小伙伴们介绍一种非常简单的实现实现QML侧边导航栏的最简方法。原始导航栏如下图:

QT实现QML侧边导航栏的最简方法

属性列表

允许用户在不同的视图或子任务之间切换。标签栏提供了一个基于标签的导航模型。TabBar由TabButton控件填充,可以与任何提供currentIndex -属性的布局或容器控件一起使用,如StackLayout或SwipeView。

属性 类型 描述
contentHeight real 此属性保存内容高度。它用于计算选项卡栏的隐式总高度。
contentWidth real 此属性保存内容宽度。它用于计算选项卡栏的隐式总宽度。
position enumeration 此属性保存选项卡栏的位置。
TabBar.HeaderTabBar.Footer
附加属性 类型 描述
index int 这个附加属性保存TabBar中每个选项卡按钮的索引。它被附加到TabBar的每个选项卡按钮上。
position enumeration 这个附加属性保存选项卡栏的位置。它被附加到TabBar的每个选项卡按钮上。
TabBar.HeaderTabBar.Footer
tabBar TabBar 此附加属性保存管理此选项卡按钮的选项卡栏。它被附加到TabBar的每个选项卡按钮上。

示例代码

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
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中添加三个TabButton,点击TabButton可以实现对StackLayout中相应的Item的切换。

侧边导航栏

从position属性中可以看出,TabBar只能直接设置为顶部和底部,无法直接应用成侧边导航栏。此时,需要将 TabBar和TabButton的大小和位置进行调整,即可实现侧边导航栏。

QT实现QML侧边导航栏的最简方法

修改代码

TabBar宽度影响自身和内部包含的TabButton的宽度。横向排列时,TabBar的宽度等于三个TabButton的宽度;纵向排列时,TabBar的宽度等于一个TabButton的宽度。

其次需要改变TabButton的宽度,高度以及排列的位置。横向排列时,TabButton的宽度大于高度;纵向排列时,为了美观,使TabButton的宽度小于高度。将所有TabButton都设置为首位相连,即第一个TabButton的bottom底部就是第二个TabButton的顶部。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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
    }
}

总结

以上就是实现实现QML侧边导航栏的最简方法,除此之外还可以自定义绘制导航栏控件,不过比起本节介绍的方法较为复杂,不如这种方法来得快捷。更多相关QT QML侧边导航栏内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://juejin.cn/post/7091160073216491557

延伸 · 阅读

精彩推荐
  • C/C++使用C++描绘心形

    使用C++描绘心形

    本文给大家分享的是一个使用c++绘制心形的代码,虽然情人节已经过去了,但是只要有心,天天都是情人节~~哈哈,让那些说程序猿都是木头的人去死吧。...

    C++教程网6322021-02-22
  • C/C++C语言库的封装和使用方法总结

    C语言库的封装和使用方法总结

    在编程的过程中,使用已经封装好的库函数是十分方便的,也是十分高效的,这篇文章主要给大家介绍了关于C语言库的封装和使用的相关资料,需要的朋友可以...

    DevCsdner8832021-11-24
  • C/C++c语言 malloc函数详解

    c语言 malloc函数详解

    这篇文章主要介绍了c语言 malloc函数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小...

    Billy121387752021-08-06
  • C/C++C语言实现2048游戏(ege图形库版)

    C语言实现2048游戏(ege图形库版)

    这篇文章主要为大家详细介绍了C语言实现2048游戏,ege图形库版,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    什么都只会一点点5042021-07-14
  • C/C++C++中vector容器使用详细说明

    C++中vector容器使用详细说明

    在c++中,vector是一个十分有用的容器,下面通过本文给大家介绍C++中vector容器使用详细说明,需要的朋友可以参考下...

    andersonyan8692021-04-19
  • C/C++opengl实现直线扫描算法和区域填充算法

    opengl实现直线扫描算法和区域填充算法

    这篇文章主要为大家详细介绍了opengl实现直线扫描算法和区域填充算法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考...

    process-z.com4072021-08-31
  • C/C++C语言版约瑟夫问题算法实现

    C语言版约瑟夫问题算法实现

    大家好,本篇文章主要讲的是C语言版约瑟夫问题算法实现,感兴趣的同学赶快来看一看吧,对你又帮助的话记得收藏一下,方便下次浏览...

    不要闻蚊香7042022-08-04
  • C/C++C++智能指针shared_ptr分析

    C++智能指针shared_ptr分析

    这篇文章主要介绍了C++智能指针shared_ptr分析的相关资料,需要的朋友可以参考下...

    BabysBreath_hl8782021-05-05