我有一个简单的QML表单,它只包含输入框。该表单还具有两个按钮"向后"和"向前"。
从数据填充的表单,包含在QT模型的一行中。按钮用于更改当前显示在窗体中的行。
如何完成此用例?比如说,对于Qt 5.9
UPD:我找到了模型的"对象实例"类型。也许是它?我解释了我的担忧:我的任务是常见的,有推荐的解决方案,还是不是 - 这是特殊和非标准的东西。
我想你想要的是类似于QDataWidgetMapper
但在QML中的东西。
如果您使用QAbstractItemModel
(QMLListModel
就是其中之一(,您可以通过收听dataChanged
、rowsInserted
/rowsRemoved
信号和朋友来重新创建自己的C++。
幸运的是,我也需要它并且已经写了它,无耻的插头:https://github.com/oKcerG/QmlModelHelper
在您的情况下,您可以像这样使用它:
property int currentIndex: 0
readonly property QtObject mappedData: myModel.ModelHelper.map(currentIndex)
TextField {
text: parent.mappedData.someTextRole
onAccepted: parent.mappedData.someTextRole = text
}
Button {
text: "previous"
enabled: parent.currentIndex > 0
onClicked: --parent.currentIndex
}
Button {
text: "next"
enabled: parent.currentIndex < myModel.ModelHelper.count - 1
onClicked: ++parent.currentIndex
}