将数据存储在QVector<QVector<QString>> data;
中(或者如果你是Python教徒的话,或者是字符串列表的列表)我应该如何将QAbstractItemModel
子类化以便能够显示(只读)这么简单QTreeView
中的结构?我想看到这样的事情:
等
从文档中,我读到我应该覆盖index()
,parent()
,rowCount()
,columnCount()
和data()
。为实现我的目标,这些方法最简单的实现是什么?
为了使可能的答案更具启发性,如何在不使用内部指针(存储在QAbstractItemModel
es)的情况下创建一个子类QModelIndex
。我见过的所有示例都以树的形式使用底层模型,其中包含节点(具有指向其子节点和父节点的指针),使用内部指针可以很容易地将其包含在QAbstractItemModel
内。但是,即使没有类似树/节点的底层结构且没有QAbstractItemModel
的内部指针,我们是否可以使用QModelIndex
?我的问题是基于文档说你可以使用内部指针,但我还没有看到任何没有它的例子。
答案 0 :(得分:0)
使用哪种级别的层次结构并不重要,创建自定义类节点 使用QVector(通常QList&lt; QString&gt; QList类似于std :: deque)来存储数据,并且指向其子节点QList&lt; Node *&gt;儿童。最高级别的层次结构是不可见的根节点。然后在模型中处理数据。
非常棒的指南,有节点和模型示例:
http://doc.qt.io/qt-5/qtwidgets-itemviews-simpletreemodel-example.html
您基本上可以复制粘贴代码并实现自己的setupModelData方法。