为了账号安全,请及时绑定邮箱和手机立即绑定

如何创建用于QML的通用对象模型?

如何创建用于QML的通用对象模型?

C++
有只小跳蛙 2019-07-17 18:16:19
如何创建用于QML的通用对象模型?我想知道是否有任何宏或方法将Qt模型注册为QObject的属性。例如,我有AnimalModel (http:/doc.qt.io/qt-5/qtQuick-Modelviewsdata-cppmodel s.html#qabopactitemmodel).我知道我可以把它传递给QuickView的根上下文QuickView view;view.rootContext()->setContextProperty("myModel", &model);如果我通过QML宏注册了QObject,我也可以传递这个对象来查看:view.rootContext()->setContextProperty("obj", pDataObject);但是,如果我想要QObject,它包含任何数据的模型,该怎么办?例如:class DataObject : public QObject{     Q_OBJECT     Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)     Q_PROPERTY(QString color READ color WRITE setColor NOTIFY colorChanged)     ...     AnimalModel m_modelAnimals;     //Is this possible in any way?     //Q_PROPERTY(AnimalModel modelAnimals READ modelAnimals NOTIFY modelAnimalsChanged)};到目前为止,我找到的每一个例子都显示了如何通过QAbstractListModel到根上下文。但没有人将其用作QObject属性。(我知道有QQmlListProperty但QQmlListProperty不支持部分刷新。总是有必要重建所有QML对象)
查看完整描述

3 回答

?
RISEBY

TA贡献1856条经验 获得超5个赞

这绝对是杰作。我上个月和半个月都在学习QML,我不知道它能以这么好的方式结合在一起。谢谢你的解释和例子。我脑子里唯一的问题。为什么QHashMap是静态PTR而不是静态PTR?可以把它定义为static QHash<int, QByteArray> roles = { { ObjectRole, "object" } };但它需要c+11

查看完整回答
反对 回复 2019-07-17
  • 3 回答
  • 0 关注
  • 464 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信