我在QTableWidget中有一堆数据,我希望能够滚动到特定的列。我目前正在使用scrollToItem(self.item(0,col))。但是,这会将行硬编码为0.如果用户正在查看第100行并滚动到特定列,则会导致问题,因为它会丢失表中的垂直位置。
有没有办法找到QTableWidget提供的QScrollArea当前用户当前正在查看的行?如果是这样,我可以轻松地用正确的行替换该默认行。
也许还有另一种方法可以用.ensureWidgetVisible()之类的东西来实现这个结果?但是,我不确定如何获得我想要滚动或显示的正确小部件。
答案 0 :(得分:3)
执行此操作的一种方法是获取第一个可见行的行索引,然后使用该索引查找要收集到的列中的第一个可见项:
def scrollToColumn(self, column=0):
visible = self.itemAt(0, 0)
if visible is not None:
self.scrollToItem(self.item(visible.row(), column))
由于您要滚动到的项目的行已经可见,因此视图不应垂直滚动(除非verticalScrollMode为ScrollPerPixel
且点(0, 0)
处的项目为不完全可见)。