PyQt:QStandardItemModel:如何将行作为列表?

时间:2014-06-16 13:45:21

标签: qt pyqt

如何从模型中获取行? 是否真的有必要经历这一行并逐步获取每个项目?

我正在使用这个功能,它正在工作,但我对此并不满意。 有更好的方法吗?

def row(self, r):               
    row = []
    for c in range(self.columnCount()):
        index = self.index(r, c)
        value = self.data(index).toString()
        row.append(value)        
    return row

1 个答案:

答案 0 :(得分:2)

将所有内容放入列表理解中:

row = [self.data(self.index(r,c))
       for c in xrange(self.columnCount())]

可能更快,但当然读起来并不是很好。

如果你想使用Qt提供的模型 - 那么是的,这是访问基础数据的唯一方法。

你可以使用QStandardItemModel,这将允许你做

row = [self.item(r,c) for c in xrange(self.columnCount())]

只能避免创建索引的需要。

根据您的使用情况,您当然可以实现基于Python列表或dicts的通用Qt模型,这些模型允许以Qt方式和python方式访问项目。