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