PathView のキー操作が期待した動作と異なる
QtQuick の ListView は focus: true の場合にキーボードの上下(左右)で操作ができますが、PathView はキーボードでの操作に対応していません。
QtQuick 1.1 のサンプルでは以下のようにキーボードで操作するコードが記述されていますが、期待した動作はしていません(遅い)。
PathView { Keys.onRightPressed: if (!moving) { incrementCurrentIndex(); console.log(moving) } Keys.onLeftPressed: if (!moving) decrementCurrentIndex() ... }
Qt Quick 2.0 のサンプルでは キー操作のコード自体が入っていません。
この Qt Qucick 2.0 のサンプルに、Qt Quick 1.1 のサンプルを参考に以下のコードを追加してみました。
Keys.onLeftPressed: incrementCurrentIndex() Keys.onRightPressed: decrementCurrentIndex()
Qt Quick 1.1 同様、スムーズにはスクロールしません。
highlightMoveDuration: 0
と、アイテム移動の間隔を 0 ミリ秒にしてみるとアニメーションはしませんが、移動は速くなります。この値を 50 くらいにするとほぼ期待した動きになるのですが、キー操作のタイミングによって動作が微妙に異なります。
本来ならば、このコードでうごくように Qt 側を修正するべきですが、とりあえず以下のように currentIndex ではなく offset の方を変えて、その変化を滑らかにすることで期待した動作が実現できました。
Behavior on offset { SmoothedAnimation { velocity: 10 } } Keys.onLeftPressed: offset = Math.round(offset - 1) Keys.onRightPressed: offset = Math.round(offset + 1)