Ярлыки

среда, 28 февраля 2018 г.

QML - ListView включить обработку нажатия клавиш

Для включения обработки нажатия клавиш необходимо добавить соответствующий обработчик, например Keys.onUpPressed. И если этого оказалось недостаточно в событии onCompleted вызвать функцию forceActiveFocus(). Эта функция обходит дерево всех FocusScope и устанавливает focus: true а для последнего activeFocus: true. Так как только в такой конфигурации работают обработчики нажатия клавиш.

    ListView {
        id: list_view
        anchors.fill: parent
        focus: true //
        Keys.onUpPressed: decrementCurrentIndex() //перемещение стрелками
        Keys.onDownPressed: incrementCurrentIndex() //перемещение стрелками
        model: myModel
        Component.onCompleted: {
            forceActiveFocus(); //необходимо для обработки нажатия клавиш
            console.log("listView activeFocus: "+activeFocus)
        }
    } //ListView

Более подробно тут и тут.

Комментариев нет:

Отправить комментарий