PySide获取选项卡中所有可见行的列表

2024-04-27 20:00:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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


Tags: 实例用户功能view列表model屏幕解决方案
1条回答
网友
1楼 · 发布于 2024-04-27 20:00:05

您可以使用QAbstractItemView::visualRect获得项目位置。它在视口坐标中,所以我们需要检查它是否在viewport rect中。下面是一个例子:

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而不是{}。在

相关问题 更多 >