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)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章