如何将 QListWidget 滚动到所选项目 [英] How to scroll QListWidget to selected item

查看:69
本文介绍了如何将 QListWidget 滚动到所选项目的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

下面的代码使用QListWidgetQPushButton 创建一个对话框窗口.单击该按钮会启动 scroll() 函数,该函数会查找并选择ITEM-0011".

The code below creates a single dialog window with QListWidget and QPushButton. Clicking the button fires up a scroll() function which finds and selects an "ITEM-0011".

我想知道是否有办法滚动列表小部件,使所选的 ITEM-0011 位于 QListWidget 的顶部边缘?下面是最终结果的样子:

I wonder if there is a way to scroll the list widget so the selected ITEM-0011 is at the top edge of QListWidget? Here is how the end result should look like:

from PyQt4 import QtCore, QtGui
app=QtGui.QApplication([])

def scroll():
    item = listWidget.findItems('ITEM-0011', QtCore.Qt.MatchRegExp)[0]
    item.setSelected(True)

window = QtGui.QDialog()
window.setLayout(QtGui.QVBoxLayout())
listWidget = QtGui.QListWidget()
window.layout().addWidget(listWidget)

for i in range(100):
    QtGui.QListWidgetItem('ITEM-%04d'%i, listWidget)

btn = QtGui.QPushButton('Scroll')
btn.clicked.connect(scroll)
window.layout().addWidget(btn)
window.show()
app.exec_()

推荐答案

list-widget 有一个 scrollToItem 方法将项目滚动到 具体位置:

The list-widget has a scrollToItem method that will scroll an item to a specific position:

def scroll():
    item = listWidget.findItems('ITEM-0011', QtCore.Qt.MatchRegExp)[0]
    item.setSelected(True)
    listWidget.scrollToItem(item, QtGui.QAbstractItemView.PositionAtTop)

这篇关于如何将 QListWidget 滚动到所选项目的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆