如何在更改模型时使 QML table 视图中的选定行保持不变
How can I make the selected row in a QML table view remain the same when changing the model
我正在使用 qml table 视图来显示一组值。在每一行上,都有允许用户调整值的按钮。
我的模型是一个 qobjects 数组。每次用户更改值时,我都会向我的控制器 class 发送一个信号,它正在创建一个新模型并将其提供给 table 视图。不幸的是,当您更新模型时,所选行被设置为 -1。有什么方法可以改变这种行为吗?
我认为你应该更新模型,而不是完全改变它。
也就是说,您的问题是当前选定的行索引 (currentRow) 发生了变化,是吗?如果是这样,也许您应该将索引存储在一个变量中,您可以像这样更新它:
TableView {
...
property int unwaveringCurrentRow
...
onCurrentRowChanged: { if (currentRow != -1) unwaveringCurrentRow = currentRow }
...
onModelChanged: { currentRow = unwaveringCurrentRow }
}
另外,请注意当前行是如何在模型更改时再次重置的。
我正在使用 qml table 视图来显示一组值。在每一行上,都有允许用户调整值的按钮。
我的模型是一个 qobjects 数组。每次用户更改值时,我都会向我的控制器 class 发送一个信号,它正在创建一个新模型并将其提供给 table 视图。不幸的是,当您更新模型时,所选行被设置为 -1。有什么方法可以改变这种行为吗?
我认为你应该更新模型,而不是完全改变它。
也就是说,您的问题是当前选定的行索引 (currentRow) 发生了变化,是吗?如果是这样,也许您应该将索引存储在一个变量中,您可以像这样更新它:
TableView {
...
property int unwaveringCurrentRow
...
onCurrentRowChanged: { if (currentRow != -1) unwaveringCurrentRow = currentRow }
...
onModelChanged: { currentRow = unwaveringCurrentRow }
}
另外,请注意当前行是如何在模型更改时再次重置的。