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