来自模型的 QML 树视图

Posted

技术标签:

【中文标题】来自模型的 QML 树视图【英文标题】:QML tree view from a model 【发布时间】:2017-08-24 16:21:31 【问题描述】:

我对 QML 很陌生,我正在努力寻找如何以简单的方式渲染树模型的任何信息(尽管是水平的,而不是垂直的):

似乎 QML 仅支持来自模型的列表数据结构。有什么办法吗?

【问题讨论】:

有TreeView显示树数据。如果您不喜欢这样,您始终可以使用QQuickItem 或Canvas 来创建自己的项目 TreeView 似乎无法像图片中那样渲染模型。如果可能的话,我希望避免创建 C++ 实现。 TreeView 能够完全按照您绘制的方式显示数据。您认为这里可能存在什么问题? 可以吗?就像我说的,我是新手,所有图片都只显示“典型”树视图。如何让它发挥作用?特别是,是否可以将具有相同父级的节点放在同一级别上? @folibis 所以,真的有可能吗,因为没有答案? 【参考方案1】:

我自己想出来的。诀窍是使用 DelegateModel、Repeater 和行/列布局,而不是 TreeView。

    使用 DelegateModel 创建一个显示当前节点的组件。 使用Repeater创建子组件 - 让组件动态创建自己的另一个实例,将当前节点分配为新构建的DelegateModel的rootIndex,并将其设置为Repeater的模型。 通过正确使用布局,您可以完全按照所附图像中的方式定位节点。

【讨论】:

嗨,我遇到了完全相同的问题。你能提供一些最小的例子吗? 很难提供一个最小示例,但我可以向您展示我的结果代码:bitbucket.org/krojew/evernus/src/…,如下所示:evernus.com/wp-content/uploads/2017/09/manufacturing3.png 新建的DelegateModel如何保持数据一致?

以上是关于来自模型的 QML 树视图的主要内容,如果未能解决你的问题,请参考以下文章

QML中的模型/视图 十二

qml基础学习 模型视图

QT QML - 从另一个类访问 qml 模型

为 QML TreeView 创建模型

QT/QML:模型没有数据时如何显示消息

如何将 QPixmap 从 C++ 模型传递到 QML?