2
我已经从QAbstractItemModel派生编码我自己的数据树,但QTreeView没有显示。QTreeView不显示数据
大多数我看到了,因为错误的变量续航时间得到了解决类似问题的答案,所以这里是我的模型的配置代码:
ui.tvHierarchy->setModel(
new MetaHierarchyModel(
cutOffExtension(
fileName.toStdString()
)
)
);
在建筑模型得到充满根节点数据和稍后应根据需要加载更多数据(通过fetchMore
)。
我开始输出每个被调用的函数。这是一个日志调用序列:
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
hasChildren(QModelIndex(-1,-1,0x0,QObject(0x0)))
return true
hasChildren(QModelIndex(-1,-1,0x0,QObject(0x0)))
return true
canFetchMore(QModelIndex(-1,-1,0x0,QObject(0x0))))
return false
rowCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
index(0 , 0 , QModelIndex(-1,-1,0x0,QObject(0x0)))
return QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970))
hasChildren(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) )
return true
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
parent(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) )
return QModelIndex(-1,-1,0x0,QObject(0x0))
index(0 , 0 , QModelIndex(-1,-1,0x0,QObject(0x0)))
return QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970))
data(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) , 13)
return "Metaparticle 1"
columnCount(QModelIndex(-1,-1,0x0,QObject(0x0)))
return 1
parent(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) )
return QModelIndex(-1,-1,0x0,QObject(0x0))
index(0 , 0 , QModelIndex(-1,-1,0x0,QObject(0x0)))
return QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970))
data(QModelIndex(0,0,0x987aa0,MetaHierarchyModel(0xa16970)) , 13)
return "Metaparticle 1"
的roleNames()
输出:
QHash((0, "display")(1, "decoration")(2, "edit")(3, "toolTip")(4, "statusTip")(5, "whatsThis"))
最后四行然后永远重复(或者至少要等到我失去了我的耐心)。 对我来说,它看起来像获取了根数据,但它们永远不会显示。奇怪的是,data
的最后一个参数int role
的值是13,它没有被定义为任何角色(我仍然无条件地返回有效字符串)。
执行此操作时有什么我错过了吗?
作为一项规则,您希望在从'data'函数返回值时尽可能保持吝啬。如果你检查[文档](https://qt-project.org/doc/qt-4.8/qt.html#ItemDataRole-enum),你可以看到角色13是'Qt :: SizeHintRole' - 我会想象一下当你返回一个字符串时你的视图变得相当困惑! –
@XavierHolt你是对的。当它仅仅在DisplayRole和一个'QVariant()'else返回时,我改变了它。据推测,当时我有另一个错误,现在一直有这个问题。你能否把它作为答案张贴,所以我可以标记它是正确的? – Nobody
太棒了!很高兴工作 - 我会在一分钟内回复。 –