Merge pull request #597 from Polaris-Night/main

fix: 修复FluTableView错位问题
This commit is contained in:
zhuzichu 2025-04-24 10:07:49 +08:00 committed by GitHub
commit 6b9f7a1c99
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 36 additions and 56 deletions

View File

@ -266,30 +266,18 @@ Rectangle {
d.rowHoverIndex = row d.rowHoverIndex = row
} }
onWidthChanged: { onWidthChanged: {
if(editVisible){ updatePosition()
updateEditPosition()
}
if(isMainTable){
updateTableItem()
}
} }
onHeightChanged: { onHeightChanged: {
if(editVisible){ updatePosition()
updateEditPosition()
}
if(isMainTable){
updateTableItem()
}
} }
onXChanged: { onXChanged: {
if(editVisible){ updatePosition()
updateEditPosition()
}
if(isMainTable){
updateTableItem()
}
} }
onYChanged: { onYChanged: {
updatePosition()
}
function updatePosition(){
if(editVisible){ if(editVisible){
updateEditPosition() updateEditPosition()
} }
@ -310,9 +298,11 @@ Rectangle {
} }
function updateTableItem(){ function updateTableItem(){
var columnModel = control.columnSource[column] var columnModel = control.columnSource[column]
columnModel.x = item_table_mouse.x if(columnModel.x !== item_table_mouse.x || columnModel.y !== item_table_mouse.y){
columnModel.y = item_table_mouse.y columnModel.x = item_table_mouse.x
d.tableItemLayout(column) columnModel.y = item_table_mouse.y
d.tableItemLayout(column)
}
} }
Rectangle{ Rectangle{
anchors.fill: parent anchors.fill: parent
@ -352,6 +342,7 @@ Rectangle {
} }
FluLoader{ FluLoader{
id: item_table_loader id: item_table_loader
property var tableView: control
property var model: item_table_mouse._model property var model: item_table_mouse._model
property var display: rowModel[columnModel.dataIndex] property var display: rowModel[columnModel.dataIndex]
property var rowModel : model.rowModel property var rowModel : model.rowModel
@ -445,10 +436,6 @@ Rectangle {
} }
} }
onWidthChanged:{
table_view.forceLayout()
}
MouseArea{ MouseArea{
id:layout_mouse_table id:layout_mouse_table
hoverEnabled: true hoverEnabled: true
@ -479,6 +466,9 @@ Rectangle {
table_view.flick(0,1) table_view.flick(0,1)
} }
delegate: com_table_delegate delegate: com_table_delegate
onWidthChanged: {
Qt.callLater(forceLayout)
}
} }
} }
@ -955,18 +945,18 @@ Rectangle {
target: d target: d
function onTableItemLayout(column){ function onTableItemLayout(column){
if(item_layout_frozen._index === column){ if(item_layout_frozen._index === column){
updateLayout() Qt.callLater(updateLayout)
} }
} }
} }
Connections{ Connections{
target: table_view target: table_view
function onContentXChanged(){ function onContentXChanged(){
updateLayout() Qt.callLater(updateLayout)
} }
} }
function updateLayout(){ function updateLayout(){
width = table_view.columnWidthProvider(_index) width = Qt.binding(() => table_view.columnWidthProvider(_index))
x = Qt.binding(function(){ x = Qt.binding(function(){
var minX = 0 var minX = 0
var maxX = table_view.width-width var maxX = table_view.width-width

View File

@ -266,30 +266,18 @@ Rectangle {
d.rowHoverIndex = row d.rowHoverIndex = row
} }
onWidthChanged: { onWidthChanged: {
if(editVisible){ updatePosition()
updateEditPosition()
}
if(isMainTable){
updateTableItem()
}
} }
onHeightChanged: { onHeightChanged: {
if(editVisible){ updatePosition()
updateEditPosition()
}
if(isMainTable){
updateTableItem()
}
} }
onXChanged: { onXChanged: {
if(editVisible){ updatePosition()
updateEditPosition()
}
if(isMainTable){
updateTableItem()
}
} }
onYChanged: { onYChanged: {
updatePosition()
}
function updatePosition(){
if(editVisible){ if(editVisible){
updateEditPosition() updateEditPosition()
} }
@ -310,9 +298,11 @@ Rectangle {
} }
function updateTableItem(){ function updateTableItem(){
var columnModel = control.columnSource[column] var columnModel = control.columnSource[column]
columnModel.x = item_table_mouse.x if(columnModel.x !== item_table_mouse.x || columnModel.y !== item_table_mouse.y){
columnModel.y = item_table_mouse.y columnModel.x = item_table_mouse.x
d.tableItemLayout(column) columnModel.y = item_table_mouse.y
d.tableItemLayout(column)
}
} }
Rectangle{ Rectangle{
anchors.fill: parent anchors.fill: parent
@ -352,6 +342,7 @@ Rectangle {
} }
FluLoader{ FluLoader{
id: item_table_loader id: item_table_loader
property var tableView: control
property var model: item_table_mouse._model property var model: item_table_mouse._model
property var display: rowModel[columnModel.dataIndex] property var display: rowModel[columnModel.dataIndex]
property var rowModel : model.rowModel property var rowModel : model.rowModel
@ -445,10 +436,6 @@ Rectangle {
} }
} }
onWidthChanged:{
table_view.forceLayout()
}
MouseArea{ MouseArea{
id:layout_mouse_table id:layout_mouse_table
hoverEnabled: true hoverEnabled: true
@ -479,6 +466,9 @@ Rectangle {
table_view.flick(0,1) table_view.flick(0,1)
} }
delegate: com_table_delegate delegate: com_table_delegate
onWidthChanged: {
Qt.callLater(forceLayout)
}
} }
} }
@ -955,18 +945,18 @@ Rectangle {
target: d target: d
function onTableItemLayout(column){ function onTableItemLayout(column){
if(item_layout_frozen._index === column){ if(item_layout_frozen._index === column){
updateLayout() Qt.callLater(updateLayout)
} }
} }
} }
Connections{ Connections{
target: table_view target: table_view
function onContentXChanged(){ function onContentXChanged(){
updateLayout() Qt.callLater(updateLayout)
} }
} }
function updateLayout(){ function updateLayout(){
width = table_view.columnWidthProvider(_index) width = Qt.binding(() => table_view.columnWidthProvider(_index))
x = Qt.binding(function(){ x = Qt.binding(function(){
var minX = 0 var minX = 0
var maxX = table_view.width-width var maxX = table_view.width-width