PathView のキー操作が期待した動作と異なる
![](https://i0.wp.com/doc.qt.io/qt-5/images/pathview.gif?ssl=1)
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 のサンプルでは キー操作のコード自体が入っていません。
![](https://i0.wp.com/storage.googleapis.com/qt6-jp/2019/06/e3a022b0-pathview-example.png?resize=408%2C268&ssl=1)
この 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)