问题描述
要连接我的数据,我使用QStandardItemmodel
,我也必须使用QML进行显示。
问题是我还没有发现使用QStandardItem*
将Q_INVOKABLE
暴露给QML的可能性。在Q_DECLARE_MetaTYPE(QStandardItem*)
之后,QML将其解释为QVariant(QStandardItem*,)
。我可以公开单独的角色,也可以从QStandardItem创建对象,但这将复制所有项目的属性并失去属性绑定。到目前为止,我发现的唯一方法是QML Instantiator
,但是它不适用于多级模型,因为其modelData
的类型为QQmlDMListAccessorData
并且不可迭代
更新:
我正在使用自定义组件设置创建一种UI-Builder。用户可以将一个组件放置在表单上,右键单击打开上下文菜单,然后从模型中选择一个参数,该组件将显示该参数。在我使用Instantinator在上下文菜单中创建参数列表之前,这给了每个模型项目QQmlDMListAccessorData
,在这里我可以获取model.name,model.value和其他属性并将它们传递给组件,从而保留属性绑定。现在,我的工作要求其中一些模型项包含子项,而我还没有找到获取QQmlDMListAccessorData
子项的方法。我已经测试了多级ListModel(讨论here),而我发现的唯一方法是通过Instantiator
的索引来为子代建模。对于QStandardItemmodel
,此方法将获得QStandardItem*
,这在QML中不可用
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)