一、前言
本文主要講解,通過外部自定義滑動條與 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
}
}
這裏簡單講解一下
-
與Qt5.12版本不同,這個版本只能通過 flickableItem 來獲取與 flickable 相關的內容
-
__rowTitleHight 是指標題的高,這裏必須說明就是在修改 contentY 的時候一定要減去標題頭部的高,也就是 contentY = -(__rowTitleHight)是起始位置(__rowTitleHight 是自己定義的變量爲 60)