有点晚了,但也许我可以帮助其他偶然发现这个问题的人:
QListWidget
解决方案是为to设置滚动模式ScrollPerPixel
(而不是默认的ScrollPerItem
):
list_widget.setVerticalScrollMode(list_widget.ScrollPerPixel)
一个最小的例子:
import sys
from PyQt5 import QtWidgets
# create app
app = QtWidgets.QApplication(sys.argv)
# create list widget
list_widget = QtWidgets.QListWidget()
# populate list widget with dummy items
for index in range(100):
list_widget.addItem(QtWidgets.QListWidgetItem('item {}'.format(index)))
# THIS IS THE IMPORTANT PART: set the scroll mode
list_widget.setVerticalScrollMode(list_widget.ScrollPerPixel)
# OPTIONAL: enable pan by mouse (and one-finger pan)
QtWidgets.QScroller.grabGesture(list_widget.viewport(),
QtWidgets.QScroller.LeftMouseButtonGesture)
# show the list widget
list_widget.show()
# run the event loop
app.exec_()
注意:此示例还展示了如何使用鼠标实现平移,这对于在没有触摸屏的设备上进行测试很有用。此外,鼠标平移设置除了默认的两指平移手势(至少在 Windows 上,在 Surface Pro 平板电脑上测试)外,还启用了单指平移。