QML

FocusScope в QML: управляем клавиатурным фокусом внутри компонента

Фокус внутри переиспользуемого компонента

FocusScope создаёт область, внутри которой дочерние элементы могут управлять клавиатурным фокусом как единым компонентом. Это полезно для пользовательского контрола с несколькими полями: внешний экран передаёт фокус компоненту, а тот выбирает активный дочерний элемент.

FocusScope {
    id: searchBox
    focus: true

    TextField {
        id: input
        anchors.fill: parent
        focus: searchBox.activeFocus
        placeholderText: "Поиск"
    }
}

Свойство focus выражает запрос фокуса, а activeFocus показывает, получил ли элемент его фактически. Вложенные компоненты могут передавать фокус внутри своей области, не перехватывая управление у соседних частей окна.

Проверяйте навигацию клавиатурой

При переключении экранов задавайте фокус явно и проверяйте поведение Tab, Shift+Tab и Escape. Не полагайтесь только на порядок объявления элементов: он может перестать совпадать с визуальным порядком после изменения макета. В диалоге также предусмотрите возврат фокуса на элемент, который его открыл.