PySide - 获取表中所有可见行的列表

时间:2013-07-11 21:58:36

标签: python qt pyside

鉴于我有一个QTableView(或其子类)的实例,连接到QAbstractTableModel的子类(或功能等效的模型+视图),是否可以获取当前的所有行的索引列表对用户可见(即不在当前滚动范围之外的那些)?

如果解决方案可以扩展到不同的窗口/屏幕尺寸,那就太棒了。

1 个答案:

答案 0 :(得分:0)

您可以使用QAbstractItemView::visualRect获取商品位置。它位于视口坐标中,因此我们需要检查它是否在视口中。这是一个例子:

viewport_rect = QRect(QPoint(0, 0), self.view.viewport().size())
for row in range(0, self.model.rowCount()):
  rect = self.view.visualRect(self.model.index(row, 0))
  is_visible = viewport_rect.intersects(rect)

此示例仅适用于一列,但您可以为所有列添加for循环以进行迭代。

在此代码中,如果项目部分可见,则认为这些项目可见。如果您只想获得完全可见的项目,请使用contains代替intersects