gpt4 book ai didi

c++ - QTreeView 不显示数据

转载 作者:太空狗 更新时间:2023-10-29 20:15:39 25 4
gpt4 key购买 nike

我从 QAbstractItemModel 派生来编码我自己的数据树,但是 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,它没有定义为任何角色(我仍然无条件地返回有效字符串).

我在实现这个的时候有什么遗漏吗?

最佳答案

QAbstractItemModel::data函数应该对它返回的数据尽可能吝啬。确保只有在 display role 上有完全匹配时才返回数据和列号。在所有其他情况下,只需返回无效的 QVariant (只需调用默认构造函数),您的 View 小部件将使用合理的默认值填充这些缺失值。

关于c++ - QTreeView 不显示数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12220489/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com