【发布时间】:2014-02-15 01:28:42
【问题描述】:
我在 pyqt 4.8 中对 QSortFilterProxyModel 进行子分类。
我正在尝试将代理标题列映射到源列,并且一直在使用我创建的这种方法。
def mapProxyColtoSourceCol(proxy, col):
#Get the first Valid Row on the Proxy and create and index on that column
#Then map the index to the source and return the source column
col = proxy.mapToSource(proxy.index(0,col)).column()
return col
这很简单,而且效果很好。但是当行过滤器删除了代理的所有行时,我遇到了问题。在这种情况下,在 (0,col) 创建的代理索引无效,无法映射到源,返回的源列为 -1。即使删除了所有行,我仍然希望能够将标题列从代理映射到源并获取源标题信息。查看 C 源代码,似乎映射使用了一些我不知道如何在 pyQt 中访问的私有函数。有没有办法做到这一点?
【问题讨论】:
-
您可以改用
mapFromSource,遍历所有源模型列并将结果与col进行比较。 -
我尝试在 (0, sourceCol) 上创建源索引,迭代所有列。但是当调用 mapFromSource 时,proxyIndex 它仍然无效,因为所有代理行都被删除了。它为代理索引上的行和列都给出了 -1
标签: qt pyqt qsortfilterproxymodel