首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QSortFilterProxyModel no中继dataChanged信号

QSortFilterProxyModel no中继dataChanged信号
EN

Stack Overflow用户
提问于 2013-12-04 17:05:12
回答 2查看 2.6K关注 0票数 4

我有一个自定义模型,当一些单元格的值发生变化时,它会不时地附加发出dataChanged()信号。这本身工作得很好,视图会根据需要进行更新。

但是后来我尝试在中间插入一个QSortFilterProxyModel,以允许对我的视图进行排序(不需要过滤),显然dataChanged()信号不是通过代理模型传递的。

据我所知,这是QSortFilterProxyModel的预期行为,除了QSortFilterProxyModel的子类化之外,还有什么解决方案,只需添加一个插槽来中继dataChanged()信号并相应地映射项?

在我的例子中,它非常简单,因为一次只更新一个单元格,或者一整列,但没有其他奇怪的东西,所以映射索引应该非常简单……

EN

回答 2

Stack Overflow用户

发布于 2016-04-30 00:17:34

QSortFilterProxyModel应该像普通模型一样发出dataChanged()信号,因此视图将得到更新。我们可以在Qt的源代码(qsortfilterproxymodel.cpp)中看到,QSortFilterProxyModel::setSourceModel将一个处理程序附加到源模型的dataChanged()信号。处理程序完成它的工作并发出QSortFilterProxyModel的dataChanged()信号。请注意,它有许多可以防止信号发出的检查。

如果没有发生这种情况,请确保正确实现了您的自定义模型,否则QSortFilterProxyModel逻辑会抑制该信号。例如,当我遇到同样的问题时,事实证明我的QAbstractItemModel::parent方法的实现是错误的。

在最坏的情况下,你可以尝试自己编译Qt,并做一些调试来找出原因。

票数 4
EN

Stack Overflow用户

发布于 2013-12-04 17:49:50

您可以在不通过QMetoObject::invokeMethod继承的情况下从QSortFilterProxyModel调用信号别忘了检查助手函数: mapFromSource mapToSource

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

https://stackoverflow.com/questions/20371047

复制
相关文章

相似问题

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