【问题标题】: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())
代码在第二行崩溃。没有引发异常。没有回溯。没有警告。我该如何解决这个问题?
【问题讨论】:
标签:
python
qt
qt4
pyqt
pyqt4
【解决方案1】:
可能是您错误地使用了代理模型的 createIndex() 方法。通常,createIndex() 方法作为模型的 index() 方法实现的一部分被调用。
您是否尝试过调用代理模型的 index() 方法来获取代理索引,然后将其映射到源?
也许您可以在上下文中显示代码或解释您要做什么。
【解决方案2】:
我也遇到过同样的问题,但幸运的是,正如 David 所推荐的那样,使用 index () 方法而不是 createIndex () 方法可以做到这一点。
一般来说,在 index() 方法之外乱用 QModelIndex 的内部指针是个坏主意。即使使用您自己的模型,弄乱内部指针也经常导致意外的行为,因为 Qts View 代码对用户来说非常模糊。