简体   繁体   English

如何将 QListWidget 滚动到所选项目

[英]How to scroll QListWidget to selected item

The code below creates a single dialog window with QListWidget and QPushButton .下面的代码创建一个带有QListWidgetQPushButton对话框窗口。 Clicking the button fires up a scroll() function which finds and selects an "ITEM-0011".单击该按钮会启动scroll()函数,该函数会查找并选择“ITEM-0011”。

I wonder if there is a way to scroll the list widget so the selected ITEM-0011 is at the top edge of QListWidget ?我想知道是否有办法滚动列表小部件,使选定的ITEM-0011位于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_()

The list-widget has a scrollToItem method that will scroll an item to aspecific position :列表小部件有一个scrollToItem方法,可以将项目滚动到特定位置

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM