2011-10-19 15 views
2

私はQListWidgetの1つに指スクロールを実装しました。 私は今の問題は、私が上にスクロールし、私のドロップダウンリスト際QListWidgetのon_current_row_changedイベントが発生しますです http://www.developer.nokia.com/Community/Wiki/Qt_Kinetic_scrolling_-_from_idea_to_implementationQTで指スクロール?

からrefernceをとっています。 どのように私はクリックでこれを避けることができますそれはスクロールでクリックしないように動作する必要があります。

答えて

1

mousePressとmouseReleaseの間で指が動いたかどうかをテストする必要があります。プレスの位置を抽出することができるので、中間変数に格納してmouseReleaseの位置(QPoint :: manhattanLength()を使用して)でテストすれば、指が動いたかどうかを知ることができます。もしそうであれば、ユーザーはスクロールしていて、そうでなければクリックしています。

EDIT:あなたがリンクしているコードを見ると、彼らはすでに上記を行っています。あなたの再実装のいくつかをもっと見ることができますか? Qt5からこれを始め

+0

:私のコードはQListWidgetで構成されています。このListWidgetをQsKineticScroller :: enableKineticScrollForに追加し、ListWidget scrollModeでScrollPerPixelに水平と垂直の両方に設定しました。 – user662285

4

は同じくらい簡単です:タッチスクリーンのため

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

TouchGestureの代わりLeftMouseButtonGestureを使用しています。

ウィジェットはQAbstractScrollArea(例えばQWebView)を継承していない場合:

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

は、そのコンテンツのサイズにウィジェットのサイズを変更してください。

関連する問題