2016-12-30 11 views

答えて

2

interactiveからfalseに設定すると、表示がほとんど固定されます。

keyNavigationEnabledこの瞬間(this critical bug)では機能しないような性質があります。

だから、それはあなたが好きな仕事を得るために少し余分な作業を行う必要があります:

MouseArea { 
    anchors.fill: ll 
    onWheel: ll.flick(0, wheel.angleDelta.y * 5) 
    } 
    ListView { 
    id: ll 
    model: 50 
    width: 50 
    height: 200 
    spacing: 5 
    focus: true 
    interactive: false 
    boundsBehavior: Flickable.StopAtBounds 
    Keys.onPressed: { 
     if (event.key === Qt.Key_Up) flick(0, 500) 
     else if (event.key === Qt.Key_Down) flick(0, -500) 
    } 
    delegate: Rectangle { 
     width: 50 
     height: 50 
     color: "red" 
     MouseArea { 
     anchors.fill: parent 
     onClicked: console.log("clicked") 
     } 
    } 
    } 

対話は、キーナビゲーションを手動で実装されて無効になり、背景MouseAreaはホイールイベントを捕捉するために使用されます。非インタラクティブビューのアイテムをクリックするために特別な操作を行う必要はないことに注意してください。インタラクティブであるかどうかにかかわらずビューは動作します。

+0

ありがとうございます。これはほとんど私をそこに連れて行きます。唯一のことは、デリゲートをクリックしても機能せず、「クリックされた」というメッセージがコンソールに表示されないことです。私はQt 5.8.0 RCを持っています。 –

+1

@AlexJenter - 実際、リストビューの後ろに置くと、ホイールキャプチャマウスエリアがデリゲートを覆っているという問題が発生していました。回答の編集を参照してください。 – dtech

+0

これは、ありがとうございます。これを解決する別の方法が見つかりました:ホイールキャプチャマウス領域のpropagateComposedEventsプロパティを "true"に設定してください。これは、トップレベルに移動し、兄弟コンポーネントを参照することを避けるのに役立ちます。 –

関連する問題