QListWidget定位到最后一行

使用Python进行GUI开发时遇到QListWidget不自动滚动到新增加的条目底部的问题。解决办法是在添加完item后调用QAbstractItemView.scrollToBottom()方法,确保视图滚动到最新添加的内容。
摘要由CSDN通过智能技术生成
经过了两个小时的努力在我终于解决了这个问题之后我能先吐槽一句吗: 百度就是一个垃圾.


Case: 
在用python做界面, 用了ListWidget, 一条一条的addItem, 悲剧的发现虽然有滑动条,但是它总是淡定的呆在最早先的位置, 不上不下, 每次看到它都觉得恨呀!!


Solution:
在ui的编辑器里, 看到了AutoScroll, 虽然勾选上了, 也就是说:


        self.log_widget = QtGui.QListWidget(self.groupBox)
        self.log_widget.setGeometry(QtCore.QRect(10, 20, 511, 201))
        self.log_widget.setLayoutDirection(QtCore.Qt.LeftToRight)
        self.log_widget.setAutoScroll(True)
        self.log_widget.setAutoScrollMargin(16)


我先创建了一个log_widget, 然后设置AutoScroll为True, 并且设置了Margin, 但是一点用都不管.


问题的关键在于, 如果你的Item是一条一条添加的, 那么你只关心它定位到最后一个, 那么最简答的方法是你在每次添加Item之后, 加上一句: QAbstractItemView.scrollToBottom(). 也就是说:


ui.log_widget.addItem(timestamp + ' ' + msg)
ui.log_widget.scrollToBottom()


然后你就神奇的完成了今天的任务. 


-----------------------------------------
另在这里提另外一种情况, 就是你不是顺序一条条添加的, 用 QAbstractItemView.scrollTo(ModelIndex index), 把 index 传进去就可以了. 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值