QSortFilterProxyModel.mapToSource 崩溃。没有信息为啥

Posted

技术标签:

【中文标题】QSortFilterProxyModel.mapToSource 崩溃。没有信息为啥【英文标题】:QSortFilterProxyModel.mapToSource crashes. No info whyQSortFilterProxyModel.mapToSource 崩溃。没有信息为什么 【发布时间】:2010-10-14 20:30:42 【问题描述】:

我有以下代码:

proxy_index = self.log_list.filter_proxy_model.createIndex(index, COL_REV)
model_index = self.log_list.filter_proxy_model.mapToSource(proxy_index)
revno = self.log_list.model.data(model_index,QtCore.Qt.DisplayRole)
self.setEditText(revno.toString())

代码在第二行崩溃。没有引发异常。没有回溯。没有警告。我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

可能是您错误地使用了代理模型的 createIndex() 方法。通常,createIndex() 方法作为模型的 index() 方法实现的一部分被调用。

您是否尝试过调用代理模型的 index() 方法来获取代理索引,然后将其映射到源?

也许您可以在上下文中显示代码或解释您要做什么。

【讨论】:

【参考方案2】:

我也遇到过同样的问题,但幸运的是,正如 David 所推荐的那样,使用 index () 方法而不是 createIndex () 方法可以做到这一点。 一般来说,在 index() 方法之外乱用 QModelIndex 的内部指针是个坏主意。即使使用您自己的模型,弄乱内部指针也经常导致意外的行为,因为 Qts View 代码对用户来说非常模糊。

【讨论】:

以上是关于QSortFilterProxyModel.mapToSource 崩溃。没有信息为啥的主要内容,如果未能解决你的问题,请参考以下文章