鉴于我有一个QTableView(或其子类)的实例,连接到QAbstractTableModel的子类(或功能等效的模型+视图),是否可以获取当前的所有行的索引列表对用户可见(即不在当前滚动范围之外的那些)?
如果解决方案可以扩展到不同的窗口/屏幕尺寸,那就太棒了。
答案 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
。