编程语言
首页 > 编程语言> > python – 当模型增长时,让QTableView滚动到最后一行

python – 当模型增长时,让QTableView滚动到最后一行

作者:互联网

我在pyqt应用程序中有一个QTableView.我不断地将行附加到底层模型.我想要的是连续滚动到最后一行,最近一行的行为(这种行为称为“自动滚动”?).但相反,视图根本不会滚动(自动)并保持在其位置.

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

干杯,
沃尔夫冈

解决方法:

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

但是有一个问题.视图需要自行调整,因为当rowsInserted触发时,它不会立即将项目置于底部.在QTimer.singleShot中调用scrollToBottom解决了这个问题,因为QTimer会等到没有挂起事件(比如视图更新).

假设模型存储为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))

标签:python,qt,pyqt,qtableview,autoscroll
来源: https://codeday.me/bug/20190630/1331437.html