欢迎光临
我们一直在努力

QML 自定义 TabBar:动态标签

目录

    • 最终效果
    • 拆开讲讲
      • 标签由模型生成,不由代码写死
      • 两处边界处理
      • 把 contentItem 和 background 换掉
      • animDone 是干什么的
    • 几个可以调的参数
    • 什么时候用
    • 小结
    • 完整代码
    • 工程下载

有些标签栏的标签数量不固定,比如后台系统按模块开页签、浏览器开新标签,事先不知道会有几个。这种情况不能把标签一个个写死。

思路就是把标签当成一组数据来管理:加标签就是加一条数据,删标签就是删一条数据,界面自动跟着变化。


最终效果

在这里插入图片描述

点「添加标签」就多出一个标签,新标签从中心弹出来;点「删除当前」标签收起消失,后面的自动往前补位。


拆开讲讲

整个动态标签就四块,一块一块说。

标签由模型生成,不由代码写死

TabBar 本身是个容器,它的子项由 Repeater 生成,背后的数据来源是一个 ListModel。所以标签有几条,取决于模型里有几条记录。

三个按钮做的事都很短:往模型里加一条、删掉当前这条、清空全部。加完数据,Repeater 会自动补一个新的 TabButton 出来,不需要你手动创建对象;删掉数据后对应的按钮会被销毁,后面的标签自动往前挪。这就是数据驱动的省事之处:你操作的是数据,位置关系交给视图。

ListModel 的数量是个会自动通知的属性,底部那行标签个数显示不用手动刷新,模型一变它自己就重算。</

赞(0)
未经允许不得转载:171主机测评 » QML 自定义 TabBar:动态标签
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址