将QTableWidget滚动到特定列

时间:2012-02-10 22:01:17

标签: python scroll pyqt qtablewidget

我在QTableWidget中有一堆数据,我希望能够滚动到特定的列。我目前正在使用scrollToItem(self.item(0,col))。但是,这会将行硬编码为0.如果用户正在查看第100行并滚动到特定列,则会导致问题,因为它会丢失表中的垂直位置。

有没有办法找到QTableWidget提供的QScrollArea当前用户当前正在查看的行?如果是这样,我可以轻松地用正确的行替换该默认行。

也许还有另一种方法可以用.ensureWidgetVisible()之类的东西来实现这个结果?但是,我不确定如何获得我想要滚动或显示的正确小部件。

1 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是获取第一个可见行的行索引,然后使用该索引查找要收集到的列中的第一个可见项:

def scrollToColumn(self, column=0):
    visible = self.itemAt(0, 0)
    if visible is not None:
        self.scrollToItem(self.item(visible.row(), column))

由于您要滚动到的项目的行已经可见,因此视图不应垂直滚动(除非verticalScrollModeScrollPerPixel且点(0, 0)处的项目为不完全可见)。