4

我在 pyqt 应用程序中有一个 QTableView。我不断地将行附加到底层模型。而我想要的是不断滚动到最后一行的视图(这种行为称为“自动滚动”吗?)。但取而代之的是,视图根本不滚动(自动)并停留在其位置。

我可以以某种方式启用这种自动滚动行为,还是需要编写一些代码来实现它?

干杯,沃尔夫冈

4

1 回答 1

3

没有默认的自动滚动功能,但您可以获得相对简单的行为。rowsInserted当您插入/追加行时,您的模型将发出。您可以连接到该信号并调用scrollToBottom您的视图。

不过有一个问题。View 需要自行调整,因为它不会在触发时立即将项目置于底部。在 a 中rowsInserted调用解决了这个问题,因为会等到没有待处理的事件(比如更新视图)。scrollToBottomQTimer.singleShotQTimer

假设模型存储为self.model并且视图为self.view,这就是它的外观:

self.model.rowsInserted.connect(self.autoScroll)

autoScroll方法:

def autoScroll(self):
    QtCore.QTimer.singleShot(0, self.view.scrollToBottom)

或者,如果您不希望为此使用单独的方法:

self.model.rowsInserted.connect(lambda: QtCore.QTimer.singleShot(0, self.view.scrollToBottom))
于 2012-09-30T05:04:57.820 回答