20200303-02 QML TableView(Qt5.1) 外部自定义ScrollBar 与 TableView 绑定

一、前言

    本文主要讲解,通过外部自定义滑动条与 TableView 绑定在一起

二、示例

TableView {
    id: tableView
}
ScrollBar {
    id: verticalBar 
    hoverEnabled: true 
    active: hovered || pressed 
    orientation: Qt.Vertical 
    size: infoTableView.height / infoTableView.flickableItem.contentHeight 
    width: 10 
    height: parent.height 
    anchors.bottom: bottomCheckGroup.top 
    policy: ScrollBar.AlwaysOn 
    onPositionChanged: { 
        infoTableView.flickableItem.contentY = position * (infoTableView.flickableItem.contentHeight) -   
        __rowTitleHight 
    } 
} 
ScrollBar { 
    id: horizonBar 
    hoverEnabled: true 
    active: hovered || pressed 
    orientation: Qt.Horizontal 
    size: infoTableView.width / infoTableView.flickableItem.contentWidth 
    width: frame.width 
    height: 10 
    anchors.bottom: bottomCheckGroup.top 
    policy: ScrollBar.AlwaysOn 
    onPositionChanged: { 
        infoTableView.flickableItem.contentX = position * (infoTableView.flickableItem.contentWidth) 
    } 
}
Connections{
    target: infoTableView.flickableItem 
    onContentXChanged: { 
        horizonBar.position = infoTableView.flickableItem.contentX / 
        infoTableView.flickableItem.contentWidth 
    } 
} 
Connections{ 
    target: infoTableView.flickableItem 
    onContentYChanged: { 
        verticalBar.position = (infoTableView.flickableItem.contentY + __rowTitleHight) / 
            infoTableView.flickableItem.contentHeight
    } 
}

这里简单讲解一下

  1. 与Qt5.12版本不同,这个版本只能通过 flickableItem 来获取与 flickable 相关的内容

  2. __rowTitleHight 是指标题的高,这里必须说明就是在修改 contentY 的时候一定要减去标题头部的高,也就是 contentY = -(__rowTitleHight)是起始位置(__rowTitleHight 是自己定义的变量为 60)

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值