QTreeView不显示数据

Nob*_*ody 3 c++ qt qabstractitemmodel

我从QAbstractItemModel派生来编码我自己的数据树,但QTreeView没有显示.

我看到类似问题的大多数答案都因为错误的变量生命周期而得到解决,所以这是我的模型分配代码:

ui.tvHierarchy->setModel(
    new MetaHierarchyModel(
        cutOffExtension(
            fileName.toStdString()
        )
    )
);
Run Code Online (Sandbox Code Playgroud)

在构造时,模型使其根节点充满数据,然后根据需要加载更多数据(通过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" 
Run Code Online (Sandbox Code Playgroud)

产量roleNames():

QHash((0, "display")(1, "decoration")(2, "edit")(3, "toolTip")(4, "statusTip")(5, "whatsThis")) 
Run Code Online (Sandbox Code Playgroud)

然后永远重复最后四行(或者至少在我失去耐心之前).对我来说,它看起来像是获取了根数据,但它们永远不会被显示出来.奇怪的是,最后一个参数data- int role具有值13,它没有被定义为任何角色(仍然无条件地给出有效的字符串).

实施这个时我有什么遗漏的吗?

Xav*_*olt 7

该化QAbstractItemModel ::数据功能应该是尽可能吝啬它返回的数据.确保只有在显示角色和列号完全匹配时才返回数据.在所有其他情况下,只返回一个无效的QVariant(只调用默认构造函数),您的视图小部件将使用合理的默认值填充这些缺失值.