Roson讲Qt#24 Quick Controls 2之TabBar(选项卡)

谁借莪1个温暖的怀抱¢ 2022-09-11 02:29 205阅读 0赞

1.概念

  1. TabBar提供了一个基于选项卡的导航模型。

外观:

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_4_color_FFFFFF_t_70_g_se_x_16

  1. TabBarTabButton控件填充,可以与任何提供currentIndex -property的布局或容器控件一起使用,如StackLayoutSwipeView
  2. TabBar {
  3. id: bar
  4. width: parent.width
  5. TabButton {
  6. text: qsTr("Home")
  7. }
  8. TabButton {
  9. text: qsTr("Discover")
  10. }
  11. TabButton {
  12. text: qsTr("Activity")
  13. }
  14. }
  15. StackLayout {
  16. width: parent.width
  17. currentIndex: bar.currentIndex
  18. Item {
  19. id: homeTab
  20. }
  21. Item {
  22. id: discoverTab
  23. }
  24. Item {
  25. id: activityTab
  26. }
  27. }

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_18_color_FFFFFF_t_70_g_se_x_16

如上所示,TabBar通常使用一组静态的选项卡按钮填充,这些按钮被内联地定义为选项卡栏的子选项卡。还可以在运行时动态地添加、插入、移动和删除项目。可以使用itemAt()或contentChildren访问这些项。

2.导入语句

  1. import QtQuick.Controls 2.2

3. 调整选项卡尺寸大小

  1. 默认情况下,TabBar会自动调整其按钮的大小,把可用空间平均分配给每个按钮。可以通过为按钮设置显式宽度来覆盖默认的调整大小行为。
  2. 下面的例子演示了如何保持每个选项卡按钮的隐式大小,而不是自动调整大小以适应选项卡栏::
  3. TabBar {
  4. width: parent.width
  5. TabButton {
  6. text: "First"
  7. width: implicitWidth
  8. }
  9. TabButton {
  10. text: "Second"
  11. width: implicitWidth
  12. }
  13. TabButton {
  14. text: "Third"
  15. width: implicitWidth
  16. }
  17. }

默认外观(没有设置显示宽度时的外观):

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_18_color_FFFFFF_t_70_g_se_x_16 1

设置了显示宽度后的外观:

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_18_color_FFFFFF_t_70_g_se_x_16 2

4.自动弹出

如果按钮的总宽度超过选项卡栏的可用宽度,它将隐藏超出宽度的部分,并在单击选项卡按钮时,未显示的部分会自动弹出一部分出来。

  1. TabBar {
  2. id: bar
  3. width: parent.width
  4. Repeater {
  5. model: ["First", "Second", "Third", "Fourth", "Fifth"]
  6. TabButton {
  7. text: modelData
  8. width: Math.max(100, bar.width / 5)
  9. }
  10. }
  11. }

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_8_color_FFFFFF_t_70_g_se_x_16

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_8_color_FFFFFF_t_70_g_se_x_16 1

5.属性

5.1 real contentHeight

此属性保存内容高度。它用于计算选项卡栏的总隐式高度。除非显式重写,否则内容高度将根据制表符的最大隐式高度自动计算。

#

5.2 real contentWidth

此属性保存内容宽度。它用于计算选项卡栏的总隐式宽度。除非显式重写,否则内容宽度将根据制表符的总隐式宽度和制表条的间距自动计算。

5.3 enumeration position

此属性保存选项卡栏的位置。注意:如果标签栏被分配为ApplicationWindow或Page的页眉或页脚,相应的位置会自动设置。
可能的值有:

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_13_color_FFFFFF_t_70_g_se_x_16

默认值是特定于样式的。

6.自定义样式

虽然官方文档中说TabBar其中一个可视项为contenttem,但是我经过尝试后认为这个东西在自定义样式时没有什么用处。TabButton和普通的Button自定义方式一样。

  1. import QtQuick 2.9
  2. import QtQuick.Window 2.2
  3. import QtQuick.Controls 2.2
  4. import QtQuick.Layouts 1.3
  5. ApplicationWindow {
  6. title: "My Application"
  7. width: 300
  8. height:300
  9. visible: true
  10. //TabBar由两个可视项组成:background和contenttem。
  11. TabBar {
  12. id: control
  13. width: parent.width
  14. background: Rectangle {
  15. color: "#00aaff" //选项卡背景颜色
  16. }
  17. TabButton {
  18. text: qsTr("Home")
  19. background: Rectangle {
  20. implicitWidth: 100 //按钮的隐式宽度
  21. implicitHeight: 40 //按钮的隐式高度
  22. opacity: 1 //透明度
  23. border.width: 3 //边框宽度
  24. border.color: "#ffff00" //边框颜色
  25. color: "#55ff00" //背景颜色
  26. radius: 2 //四个角的弧度
  27. }
  28. }
  29. TabButton {
  30. text: qsTr("Discover")
  31. }
  32. TabButton {
  33. text: qsTr("Activity")
  34. }
  35. }
  36. }

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_8_color_FFFFFF_t_70_g_se_x_16 2

watermark_type_ZHJvaWRzYW5zZmFsbGJhY2s_shadow_50_text_Q1NETiBAQWxsZW4gUm9zb24_size_8_color_FFFFFF_t_70_g_se_x_16 3

发表评论

表情:
评论列表 (有 0 条评论,205人围观)

还没有评论,来说两句吧...

相关阅读