我很难解释我的问题,所以我只是让它变得简单,并希望它能完成工作。我将 Qt5 与 QtQuick 2.0 一起使用。
我创建了一个继承自 QAbstractListModel 的 MyListModel 类,并保存 MyListItem 类型的项目。我在 QML ListView 中将其用作model: myListModel
,并且委托quantity
在可爱的 TextInput 框中显示来自 MyListItem 的属性。一切正常。
但是,当我更改quantity
委托的值时,模型中的项目不会更新。我知道它们没有更新,因为我的setQuantity(long desired_quantity)
函数,MyListItem 的成员,没有运行。长话短说,我不知道如何从委托中实际调用 setQuantity 函数。我可以通过添加Q_PROPERTY(long quantity READ quantity WRITE setQuantity)
到 MyListItem 手动完成,然后使用setContextProperty()
将MyListItem myTemp
对象公开给 QML,然后调用myTemp.quantity = 10
. 但很明显,如果委托不能写入数量属性(它只能从中读取),它就没有做这项工作。
有人可以指出我正确的方向吗?我觉得我已经尝试了 Qt 设计师可能期望的一切,但我一无所获。而且我找不到任何可以明确解决我的问题的文档。