This commit is contained in:
朱子楚\zhuzi 2024-03-18 22:11:39 +08:00
parent d01f9019c0
commit 77bb12b164
2 changed files with 42 additions and 24 deletions

View File

@ -341,12 +341,9 @@ Rectangle {
} }
TableView { TableView {
id:table_view id:table_view
ListModel{
id:model_columns
}
boundsBehavior: Flickable.StopAtBounds boundsBehavior: Flickable.StopAtBounds
anchors.fill: parent anchors.fill: parent
contentX: header_horizontal.contentX ScrollBar.horizontal:scroll_bar_h
ScrollBar.vertical:scroll_bar_v ScrollBar.vertical:scroll_bar_v
columnWidthProvider: function(column) { columnWidthProvider: function(column) {
var columnObject = d.columns_data[column] var columnObject = d.columns_data[column]
@ -731,9 +728,10 @@ Rectangle {
height: visible ? Math.max(1, contentHeight) : 0 height: visible ? Math.max(1, contentHeight) : 0
boundsBehavior: Flickable.StopAtBounds boundsBehavior: Flickable.StopAtBounds
clip: true clip: true
contentX: table_view.contentX syncDirection: Qt.Horizontal
ScrollBar.horizontal:scroll_bar_h_2
columnWidthProvider: table_view.columnWidthProvider columnWidthProvider: table_view.columnWidthProvider
ScrollBar.horizontal:scroll_bar_h syncView: table_view.rows === 0 ? null : table_view
onContentXChanged:{ onContentXChanged:{
timer_horizontal_force_layout.restart() timer_horizontal_force_layout.restart()
} }
@ -760,15 +758,16 @@ Rectangle {
syncView: table_view syncView: table_view
clip: true clip: true
model: header_row_model model: header_row_model
delegate: com_row_header_delegate
onContentYChanged:{
timer_vertical_force_layout.restart()
}
Connections{ Connections{
target: table_model target: table_model
function onRowCountChanged(){ function onRowCountChanged(){
header_row_model.rows = Array.from({length: table_model.rows.length}, (_, i) => ({rowIndex:i+1})) header_row_model.rows = Array.from({length: table_model.rows.length}, (_, i) => ({rowIndex:i+1}))
} }
} }
onContentYChanged:{
timer_vertical_force_layout.restart()
}
Timer{ Timer{
id:timer_vertical_force_layout id:timer_vertical_force_layout
interval: 50 interval: 50
@ -776,7 +775,6 @@ Rectangle {
header_vertical.forceLayout() header_vertical.forceLayout()
} }
} }
delegate: com_row_header_delegate
} }
FluScrollBar { FluScrollBar {
id: scroll_bar_h id: scroll_bar_h
@ -785,6 +783,17 @@ Rectangle {
right: parent.right right: parent.right
bottom: layout_mouse_table.bottom bottom: layout_mouse_table.bottom
} }
visible: table_view.rows !== 0
z:999
}
FluScrollBar {
id: scroll_bar_h_2
anchors{
left: layout_mouse_table.left
right: parent.right
bottom: layout_mouse_table.bottom
}
visible: table_view.rows === 0
z:999 z:999
} }
FluScrollBar { FluScrollBar {

View File

@ -342,12 +342,9 @@ Rectangle {
} }
TableView { TableView {
id:table_view id:table_view
ListModel{
id:model_columns
}
boundsBehavior: Flickable.StopAtBounds boundsBehavior: Flickable.StopAtBounds
anchors.fill: parent anchors.fill: parent
contentX: header_horizontal.contentX ScrollBar.horizontal:scroll_bar_h
ScrollBar.vertical:scroll_bar_v ScrollBar.vertical:scroll_bar_v
columnWidthProvider: function(column) { columnWidthProvider: function(column) {
var columnObject = d.columns_data[column] var columnObject = d.columns_data[column]
@ -732,9 +729,10 @@ Rectangle {
height: visible ? Math.max(1, contentHeight) : 0 height: visible ? Math.max(1, contentHeight) : 0
boundsBehavior: Flickable.StopAtBounds boundsBehavior: Flickable.StopAtBounds
clip: true clip: true
contentX: table_view.contentX syncDirection: Qt.Horizontal
ScrollBar.horizontal:scroll_bar_h_2
columnWidthProvider: table_view.columnWidthProvider columnWidthProvider: table_view.columnWidthProvider
ScrollBar.horizontal:scroll_bar_h syncView: table_view.rows === 0 ? null : table_view
onContentXChanged:{ onContentXChanged:{
timer_horizontal_force_layout.restart() timer_horizontal_force_layout.restart()
} }
@ -761,15 +759,16 @@ Rectangle {
syncView: table_view syncView: table_view
clip: true clip: true
model: header_row_model model: header_row_model
delegate: com_row_header_delegate
onContentYChanged:{
timer_vertical_force_layout.restart()
}
Connections{ Connections{
target: table_model target: table_model
function onRowCountChanged(){ function onRowCountChanged(){
header_row_model.rows = Array.from({length: table_model.rows.length}, (_, i) => ({rowIndex:i+1})) header_row_model.rows = Array.from({length: table_model.rows.length}, (_, i) => ({rowIndex:i+1}))
} }
} }
onContentYChanged:{
timer_vertical_force_layout.restart()
}
Timer{ Timer{
id:timer_vertical_force_layout id:timer_vertical_force_layout
interval: 50 interval: 50
@ -777,7 +776,6 @@ Rectangle {
header_vertical.forceLayout() header_vertical.forceLayout()
} }
} }
delegate: com_row_header_delegate
} }
FluScrollBar { FluScrollBar {
id: scroll_bar_h id: scroll_bar_h
@ -786,6 +784,17 @@ Rectangle {
right: parent.right right: parent.right
bottom: layout_mouse_table.bottom bottom: layout_mouse_table.bottom
} }
visible: table_view.rows !== 0
z:999
}
FluScrollBar {
id: scroll_bar_h_2
anchors{
left: layout_mouse_table.left
right: parent.right
bottom: layout_mouse_table.bottom
}
visible: table_view.rows === 0
z:999 z:999
} }
FluScrollBar { FluScrollBar {