代码之家  ›  专栏  ›  技术社区  ›  banjo bill

PyQt QStandardItemModel-如何将行读取为列表[重复]

  •  0
  • banjo bill  · 技术社区  · 1 年前

    我如何从模型中获取行? 真的有必要一行一步地得到每一项吗?

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

    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
    
    0 回复  |  直到 11 年前
        1
  •  3
  •   sebastian    11 年前

    将所有内容放入列表中:

    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列表或字典实现通用的Qt模型,这些模型允许以Qt方式和Python方式访问项目。

    推荐文章