0
鑑於我有一個連接到QAbstractTableModel的子類(或功能上等效的模型+視圖)的QTableView(或其子類)的實例,是否有可能獲得當前所有行的索引列表可見給用戶(即那些不在當前滾動範圍之外的)?PySide - 獲取表中所有可見行的列表
如果解決方案擴展到不同的窗口/屏幕尺寸,那將會很棒。
鑑於我有一個連接到QAbstractTableModel的子類(或功能上等效的模型+視圖)的QTableView(或其子類)的實例,是否有可能獲得當前所有行的索引列表可見給用戶(即那些不在當前滾動範圍之外的)?PySide - 獲取表中所有可見行的列表
如果解決方案擴展到不同的窗口/屏幕尺寸,那將會很棒。
您可以使用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
。
非常好。在目前的情況下,它對於常量使用來說可能有點計算繁重(我們需要動態地將額外的行數據加載到內存中,無論用戶何時將新行放入視圖中),但這絕對是一個工作的基礎。非常感謝你! – csvan