4

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

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

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

4

1 回答 1

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)不完全可见)。

于 2012-02-10T23:58:50.500 回答