QAbstractTableModel可以看到哪些行

时间:2015-02-17 14:42:00

标签: python pyqt4

我有一个带有自定义QAbstractTableModel的自定义QTableView。我更新数据已更改的每一行。管理数据的类有一个脏标志,可以帮助减少更新次数。

当我有大量行,1000或更多时,表的响应性会稍微降低。而不是每行的for循环检查它是脏的,我想循环遍布用户可见的20行左右,但我似乎无法确定如何获取该信息。

是否有方法或方便的方法来确定QAbstractTableModel可以看到哪些行?

1 个答案:

答案 0 :(得分:0)

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

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()))