2024-04-27 20:00:05 发布
网友
假设我有一个QTableView实例(或其子类),它连接到QAbstractTableModel(或功能等效的model+view)的子类,是否可以获得当前对用户可见的所有行的索引列表(即那些不在当前滚动范围之外的行)?
如果解决方案可以扩展到不同的窗口/屏幕大小,那就太好了。
您可以使用QAbstractItemView::visualRect获得项目位置。它在视口坐标中,所以我们需要检查它是否在viewport rect中。下面是一个例子:
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循环来遍历所有列。在
for
在此代码中,如果项目部分可见,则认为它们是可见的。如果只想获取完全可见的项目,请使用contains而不是{}。在
contains
您可以使用
QAbstractItemView::visualRect
获得项目位置。它在视口坐标中,所以我们需要检查它是否在viewport rect中。下面是一个例子:这个例子只适用于一个列,但是您可以添加一个
for
循环来遍历所有列。在在此代码中,如果项目部分可见,则认为它们是可见的。如果只想获取完全可见的项目,请使用}。在
contains
而不是{相关问题 更多 >
编程相关推荐