Python QAbstractTableModel视图中有哪些行

Python QAbstractTableModel视图中有哪些行,python,pyqt4,Python,Pyqt4,我有一个自定义QabstractTableView和一个自定义QAbstractTableModel。我更新数据已更改的每一行。管理数据的类有一个脏标志,它可以很好地帮助减少更新的数量 当我有大量的行(1000行或更多行)时,表的响应性会稍差一些。我不想对每一行执行for循环来检查它是否脏,我只想对用户可见的大约20行进行循环,但我似乎无法确定如何获取该信息 是否有一种方法或一种方便的方法来确定哪些行对QAbstractTableModel可见?以下内容将仅更新用户可见的行: minRow =

我有一个自定义QabstractTableView和一个自定义QAbstractTableModel。我更新数据已更改的每一行。管理数据的类有一个脏标志,它可以很好地帮助减少更新的数量

当我有大量的行(1000行或更多行)时,表的响应性会稍差一些。我不想对每一行执行for循环来检查它是否脏,我只想对用户可见的大约20行进行循环,但我似乎无法确定如何获取该信息


是否有一种方法或一种方便的方法来确定哪些行对QAbstractTableModel可见?

以下内容将仅更新用户可见的行:

minRow = treeView.rowAt(0) # very top of scrollable area
if minRow >= 0: # ensure there is at least one row
    maxRow = treeView.rowAt(treeView.height()) # very bottom...

    # there may not be enough rows to fill scrollable area
    if maxRow < 0: maxRow = model.rowCount() - 1

    for row in range(minRow, maxRow + 1):
        model.dataChanged.emit(model.index(row, 0), model.index(row, model.columnCount()))
minRow=treeView.rowAt(0)#可滚动区域的最顶部
如果minRow>=0:#确保至少有一行
maxRow=treeView.rowAt(treeView.height())#最底部。。。
#可能没有足够的行来填充可滚动区域
如果maxRow<0:maxRow=model.rowCount()-1
对于范围内的行(minRow、maxRow+1):
model.dataChanged.emit(model.index(行,0),model.index(行,model.columnCount())