2013-03-12 168 views
1

我有一个数据表示如下:QT自定义树视图


  • - +父(0:0)
    • ---- + Child1(1:1)
      • ---- + Child11(2:2)
    • ---- + Childn(1:N)

我使用的是QT TreeView和一个自定义模式,想显示它。 我的要求是,与孩子相比,家长需要处于不同的专栏中。

如果父col:行是0:0。 子列:行应该是1:1。 此外,孩子的孩子可以有col:row作为2:2

据我读过的Qt论坛没有简单的方法来做到这一点。它说我必须实现基于Qt treeview的自定义视图。 这是唯一的方法吗?有没有一个如何实现像视图一样的自定义树作为参考的例子? 我在Linux上使用Qt 4.7(Ubuntu 12) 任何帮助,非常感谢。

在此先感谢。

+0

这是一个一半的答案,所以我张贴注释。这是一个如何做自己的树模型的好例子。我建议大量复制它,然后重新定型以满足您的需求。 http://qt-project.org/doc/qt-4.8/itemviews-simpletreemodel.html – 2013-03-12 10:04:33

+0

@EricJohnson:我相信他的问题是针对典型树模型的默认QTreeview显示行为,而不是模型本身,因为他已经拥有实施一个自定义模型。 – ksming 2013-03-12 10:11:11

回答

1

我不认为你可以修改树视图显示行为没有子类QTreeView。另一种方法是实现一个QAbstractProxyModel将您的自定义模型映射到新的代理模型,根据自己的树级别将自定义模型中的每个索引映射到代理模型中的不同列。我认为后一种方法比较容易,因为您已经熟悉实现自定义模型而不是QTreeView。

看一看文档浏览: http://qt-project.org/doc/qt-4.8/qabstractproxymodel.html

+0

是的,这是正确的做法。我发现最近在Qt-Apps上发布了一些类似和有用的东西。这里是链接http://qt-apps.org/content/show.php/QAIV?content=157705,以防万一任何人需要将来使用。谢谢@ksming – user2160108 2013-04-04 14:03:01