标签:python qt pyqt qtableview autoscroll
我在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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。