首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在QModel中更改了父项/子项的QTreeView值

在QModel中更改了父项/子项的QTreeView值
EN

Stack Overflow用户
提问于 2019-08-14 01:48:52
回答 1查看 131关注 0票数 1

我有一个分层数据结构,我将它包装在QModel (继承自QAbstractItemModel)中,并在QTreeView中显示和编辑它。

让我们假设QTreeView显示以下数据:

代码语言:javascript
复制
Item1  
|----Item2  
     |----Item3  
          |-----Item4  
                |----Item5

现在将发生以下情况:

1)我编辑了Item3并将它的值改为Item3_a。

2) QModel识别该更改,并将包装模型中父项和子项的项值更改为:

代码语言:javascript
复制
Item1_a
|----Item2_a
     |----Item3_a
          |-----Item4_a
                |----Item5_a

3) QTreeView通过模型得到关于附加更改的通知(项1、2、4和5)。仅更改显示的值。层次结构保持不变。

我的问题针对第三步:

如何正确地将更改的数据通知给QTreeView?

这是我尝试过的:

我知道有modelReset,但后来QTreeView崩溃了。然而,它应该保持其collpase/expanded状态。

根据文档,使用具有不同父索引的模型的setData方法会给出未定义的行为。我尝试从setData递归地为每个父/子调用setData,但这导致程序崩溃。

我使用的是qt5。

EN

回答 1

Stack Overflow用户

发布于 2019-08-14 05:44:59

我很确定你要找的是"rowsInserted“和与之相关的方法。"dataChanged“信号表示给定的单元格(或区域)的值发生了变化;这与表结构的变化无关。

您在这里所做的是在将条目从一个父级移动到另一个父级时删除和插入行。您需要实现与此相关的所有方法。还有一个"rowsMoved“可能更适合你的需求。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57482948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档