2011-10-19 3 views
2

내 QListWidget 중 하나에 핑거 스크롤링을 구현했습니다. 나는 지금 http://www.developer.nokia.com/Community/Wiki/Qt_Kinetic_scrolling_-_from_idea_to_implementationQT에서 손가락 스크롤?

에서 refernce를을 촬영 한 문제는 내가 위로 스크롤 할 때 트리거됩니다 QListWidget의 이벤트를 on_current_row_changed하고 내 목록 아래로. 스크롤을 클릭하지 않은 것처럼 동작해야하는 경우에만 클릭하면이 문제를 방지 할 수 있습니다.

답변

1

mousePress와 mouseRelease 사이에서 손가락이 움직 였는지 여부를 테스트해야합니다. 언론의 위치를 ​​추출 할 수 있으므로 중간 변수에 저장 한 다음 mouseRelease (QPoint :: manhattanLength()를 사용하여 말하기) 위치에서 테스트하면 손가락이 움직 였는지 여부를 알 수 있습니다. 있다면, 사용자는 스크롤하고, 그렇지 않다면 클릭합니다.

편집 : 링크 된 코드를 살펴보면 이미 위와 같은 작업을 수행하고 있습니다. 우리가 다시 생각해 볼 수 있을까요? 터치 스크린에 대한

#include <QScroller> 
... 
QScroller::grabGesture(myListWidget, QScroller::LeftMouseButtonGesture); 

TouchGesture 대신 LeftMouseButtonGesture 사용으로 Qt5에서 시작

+0

: 내 코드는 QListWidget으로 구성되어 있으며이 ListWidget을 QsKineticScroller :: enableKineticScrollFor에 추가하고 ListWidget scrollMode에서 ScrollPerPixel로 수평 및 수직으로 설정했습니다. – user662285

4

이 간단합니다.

위젯이 QAbstractScrollArea을 상속하지 않는 경우

(예를 들어 QWebView) :

QScrollArea *scrollArea = new QScrollArea; 
scrollArea->setWidget(myWidget); 
QScroller::grabGesture(scrollArea, QScroller::LeftMouseButtonGesture); 

컨텐츠 크기로 위젯 크기를 조정해야합니다.