From 023776dbe8b5e73f5ddba0e1bb80391ceb45bd69 Mon Sep 17 00:00:00 2001 From: Polaris-Night <158275221@qq.com> Date: Tue, 22 Apr 2025 22:33:25 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DFluTableView=E9=94=99?= =?UTF-8?q?=E4=BD=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../FluentUI/Controls/FluTableView.qml | 46 ++++++++----------- .../FluentUI/Controls/FluTableView.qml | 46 ++++++++----------- 2 files changed, 36 insertions(+), 56 deletions(-) diff --git a/src/Qt5/imports/FluentUI/Controls/FluTableView.qml b/src/Qt5/imports/FluentUI/Controls/FluTableView.qml index 681200aa..6fb39b4f 100644 --- a/src/Qt5/imports/FluentUI/Controls/FluTableView.qml +++ b/src/Qt5/imports/FluentUI/Controls/FluTableView.qml @@ -266,30 +266,18 @@ Rectangle { d.rowHoverIndex = row } onWidthChanged: { - if(editVisible){ - updateEditPosition() - } - if(isMainTable){ - updateTableItem() - } + updatePosition() } onHeightChanged: { - if(editVisible){ - updateEditPosition() - } - if(isMainTable){ - updateTableItem() - } + updatePosition() } onXChanged: { - if(editVisible){ - updateEditPosition() - } - if(isMainTable){ - updateTableItem() - } + updatePosition() } onYChanged: { + updatePosition() + } + function updatePosition(){ if(editVisible){ updateEditPosition() } @@ -310,9 +298,11 @@ Rectangle { } function updateTableItem(){ var columnModel = control.columnSource[column] - columnModel.x = item_table_mouse.x - columnModel.y = item_table_mouse.y - d.tableItemLayout(column) + if(columnModel.x !== item_table_mouse.x || columnModel.y !== item_table_mouse.y){ + columnModel.x = item_table_mouse.x + columnModel.y = item_table_mouse.y + d.tableItemLayout(column) + } } Rectangle{ anchors.fill: parent @@ -352,6 +342,7 @@ Rectangle { } FluLoader{ id: item_table_loader + property var tableView: control property var model: item_table_mouse._model property var display: rowModel[columnModel.dataIndex] property var rowModel : model.rowModel @@ -445,10 +436,6 @@ Rectangle { } } - onWidthChanged:{ - table_view.forceLayout() - } - MouseArea{ id:layout_mouse_table hoverEnabled: true @@ -479,6 +466,9 @@ Rectangle { table_view.flick(0,1) } delegate: com_table_delegate + onWidthChanged: { + Qt.callLater(forceLayout) + } } } @@ -955,18 +945,18 @@ Rectangle { target: d function onTableItemLayout(column){ if(item_layout_frozen._index === column){ - updateLayout() + Qt.callLater(updateLayout) } } } Connections{ target: table_view function onContentXChanged(){ - updateLayout() + Qt.callLater(updateLayout) } } function updateLayout(){ - width = table_view.columnWidthProvider(_index) + width = Qt.binding(() => table_view.columnWidthProvider(_index)) x = Qt.binding(function(){ var minX = 0 var maxX = table_view.width-width diff --git a/src/Qt6/imports/FluentUI/Controls/FluTableView.qml b/src/Qt6/imports/FluentUI/Controls/FluTableView.qml index 7efea849..100be1d9 100644 --- a/src/Qt6/imports/FluentUI/Controls/FluTableView.qml +++ b/src/Qt6/imports/FluentUI/Controls/FluTableView.qml @@ -266,30 +266,18 @@ Rectangle { d.rowHoverIndex = row } onWidthChanged: { - if(editVisible){ - updateEditPosition() - } - if(isMainTable){ - updateTableItem() - } + updatePosition() } onHeightChanged: { - if(editVisible){ - updateEditPosition() - } - if(isMainTable){ - updateTableItem() - } + updatePosition() } onXChanged: { - if(editVisible){ - updateEditPosition() - } - if(isMainTable){ - updateTableItem() - } + updatePosition() } onYChanged: { + updatePosition() + } + function updatePosition(){ if(editVisible){ updateEditPosition() } @@ -310,9 +298,11 @@ Rectangle { } function updateTableItem(){ var columnModel = control.columnSource[column] - columnModel.x = item_table_mouse.x - columnModel.y = item_table_mouse.y - d.tableItemLayout(column) + if(columnModel.x !== item_table_mouse.x || columnModel.y !== item_table_mouse.y){ + columnModel.x = item_table_mouse.x + columnModel.y = item_table_mouse.y + d.tableItemLayout(column) + } } Rectangle{ anchors.fill: parent @@ -352,6 +342,7 @@ Rectangle { } FluLoader{ id: item_table_loader + property var tableView: control property var model: item_table_mouse._model property var display: rowModel[columnModel.dataIndex] property var rowModel : model.rowModel @@ -445,10 +436,6 @@ Rectangle { } } - onWidthChanged:{ - table_view.forceLayout() - } - MouseArea{ id:layout_mouse_table hoverEnabled: true @@ -479,6 +466,9 @@ Rectangle { table_view.flick(0,1) } delegate: com_table_delegate + onWidthChanged: { + Qt.callLater(forceLayout) + } } } @@ -955,18 +945,18 @@ Rectangle { target: d function onTableItemLayout(column){ if(item_layout_frozen._index === column){ - updateLayout() + Qt.callLater(updateLayout) } } } Connections{ target: table_view function onContentXChanged(){ - updateLayout() + Qt.callLater(updateLayout) } } function updateLayout(){ - width = table_view.columnWidthProvider(_index) + width = Qt.binding(() => table_view.columnWidthProvider(_index)) x = Qt.binding(function(){ var minX = 0 var maxX = table_view.width-width