如何将QListWidget滚动到所选项目

时间:2017-01-07 04:56:51

标签: python qt pyqt qlistwidget

下面的代码会创建一个包含QListWidgetQPushButton的对话窗口。 单击该按钮将触发scroll()函数,该函数查找并选择“ITEM-0011”。

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

enter image description here

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_()

1 个答案:

答案 0 :(得分:1)

list-widget有一个scrollToItem方法,可以将项目滚动到specific position

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