我有一个简单的 QML 表单,其中仅包含输入框。该表单还有两个按钮“后退”和“前进”。
由数据填充的表单,包含在 QT 模型的一行中。按钮用于更改当前显示在表单中的行。
我怎样才能完成这个用例?比如说,对于 Qt 5.9
UPD:我找到了模型的“对象实例”类型。或许就是这样?我解释了我的担忧:我的任务是否常见并且有推荐的解决方案,或者不是 - 这是特殊且非标准的东西。
最佳答案
我猜你想要的是类似 QDataWidgetMapper
的东西但在 QML 中。
如果您使用 QAbstractItemModel
(QML ListModel
就是其中之一),您可以通过监听 dataChanged
在 C++ 中重新创建您自己的模型,rowsInserted
/rowsRemoved
信号和 friend 。
幸运的是,我也需要它并且已经写了它,无耻的插件: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
}
关于c++ - 如何在不使用委托(delegate)的情况下在 QML 中显示模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59199591/