QListWidget定位到最后一行

来源:互联网 发布:研祥集团待遇知乎 编辑:程序博客网 时间:2024/06/08 05:33
经过了两个小时的努力在我终于解决了这个问题之后我能先吐槽一句吗: 百度就是一个垃圾.


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 传进去就可以了. 
0 0
原创粉丝点击