我已经对我的QListWidget中的一个实现了手指滚动。 我已refernce从 http://www.developer.nokia.com/Community/Wiki/Qt_Kinetic_scrolling_-_from_idea_to_implementation手指在QT中滚动?
现在的问题是on_current_row_changed QListWidget的事件时,我向上滚动,都会激发和向下我的列表。 我怎样才能避免这种点击只应该像点击不滚动。
我已经对我的QListWidget中的一个实现了手指滚动。 我已refernce从 http://www.developer.nokia.com/Community/Wiki/Qt_Kinetic_scrolling_-_from_idea_to_implementation手指在QT中滚动?
现在的问题是on_current_row_changed QListWidget的事件时,我向上滚动,都会激发和向下我的列表。 我怎样才能避免这种点击只应该像点击不滚动。
您需要测试手指是否在mousePress和mouseRelease之间移动。你可以提取出版社的位置,所以如果你把它存储在一个中间变量中,然后根据mouseRelease的位置(比如使用QPoint :: manhattanLength())进行测试,你可以判断手指是否移动了。如果有,用户正在滚动,如果没有,他们正在点击。
编辑:看看你已经链接到的代码,他们已经在做上述。我们能否再看到一些你的重塑?
#include <QScroller>
...
QScroller::grabGesture(myListWidget, QScroller::LeftMouseButtonGesture);
对于触摸屏使用TouchGesture
代替LeftMouseButtonGesture
:
从QT5开始,因为这是这么简单。
如果物件不继承QAbstractScrollArea
(例如QWebView
):
QScrollArea *scrollArea = new QScrollArea;
scrollArea->setWidget(myWidget);
QScroller::grabGesture(scrollArea, QScroller::LeftMouseButtonGesture);
一定要小部件尺寸调整到其内容的大小。
:我的代码包含QListWidget,我将这个ListWidget添加到QsKineticScroller :: enableKineticScrollFor,并在我的ListWidget scrollMode中设置为ScrollPerPixel水平和垂直。 – user662285