gpt4 book ai didi

python - 在 QListWidget 上自定义 PyQt 多点触控平移手势

转载 作者:行者123 更新时间:2023-11-28 19:27:51 26 4
gpt4 key购买 nike

我正在编写一个简单的记事本应用程序来自学基本的 Python/PyQt,但遇到了问题。具体来说,我想知道如何更改 QListWidget 上的多点触控平移手势灵敏度。

就像现在一样,当我用两根手指上下拖动时,我用手指移动每个像素,列表似乎都向上/向下移动了一步。这不是我自己实现的,它似乎是开箱即用的列表小部件

我希望移动模仿手指的速度,即每 x*height_of_item_in_pixels 小部件项目向上/向下移动一次。如果不对手势系统进行重大入侵,这是否可行?我该怎么做?

我正在使用 PyQt 4.8.3 和 Python 2.6

最佳答案

有点晚了,但也许我可以帮助其他偶然发现这个问题的人:

解决方案是将 QListWidget 的滚动模式设置为 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 平板电脑上测试过)。

关于python - 在 QListWidget 上自定义 PyQt 多点触控平移手势,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5050817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com