Документация
ОС Аврора 5.1.0

Клавиатура в Silica

Управление клавиатурой в нативных приложениях осуществляется с помощью Qt и Silica.

Клавиатура открывается автоматически, когда пользователь фокусируется на поле ввода. При открытии клавиатуры окно приложения сжимается.

В веб-приложениях, использующих gecko, клавиатура управляется через WebView.

Управление внешним видом клавиатуры

Для того, чтобы изменить внешний вид клавиатуры, следует воспользоваться свойством inputMethodHints у TextField.

Для экранной клавиатуры поддерживаются следующие методы ввода:

  • Qt.ImhDialableCharactersOnly — телефонные номера;
  • Qt.ImhDigitsOnly — целые числа;
  • Qt.ImhEmailCharactersOnly — поле ввода адреса электронной почты;
  • Qt.ImhFormattedNumbersOnly — дробные числа;
  • Qt.ImhNoPredictiveText — отключение предиктивного ввода текста;
  • Qt.ImhUrlCharactersOnly — символы, используемые для ввода URL;
  • Qt.ImhNoAutoUppercase — отключение автоматического переключения в верхний регистр окончания ввода предложения.

Свойство softwareInputPanelEnabled у TextField определяет, будет ли отображаться виртуальная клавиатура при получении фокуса текстовой областью. Установка его как false позволит не открывать клавиатуру для поля ввода.

Свойство focus у полей ввода позволяет открывать и закрывать виртуальную клавиатуру. Когда focus имеет значение true, клавиатура открыта, при установке значения false клавиатура закрывается.

QML-тип EnterKey позволяет настроить внешний вид кнопки «Enter» на виртуальной клавиатуре: доступность при заданном условии, подсветку, иконку и текст, а также отследить нажатие на неё.

Например, следующий код откроет для поля ввода клавиатуру для ввода дробных чисел, отобразит в качестве кнопки «Enter» стрелку icon-m-enter-next, а при нажатии на «Enter» закроет виртуальную клавиатуру:

TextField {
    width: parent.width
    placeholderText: qsTr("Enter number from -10 to 10")
    label: qsTr("Text Field")
    inputMethodHints: Qt.ImhFormattedNumbersOnly
    validator: DoubleValidator {
        bottom: -10; top: 10
        decimals: 2
    }
    EnterKey.iconSource: "image://theme/icon-m-enter-next"
    EnterKey.onClicked: focus = false
}

Виртуальная клавиатура

Клавиатура как QML-компонент

Клавиатуру можно отобразить непосредственно на странице приложения как QML-компонент. Для этого следует воспользоваться типом Keypad.

Минимальный пример позволит отобразить виртуальную клавиатуру в нижней части страницы:

Keypad {
    anchors.bottom: parent.bottom
}

Keypad

Keypad позволяет настроить внешний вид кнопок, подписи к ним, цвета и видимость. С помощью обработчиков сигналов onClicked и прочих можно отследить действия пользователя с клавиатурой.

Мы используем cookies для персонализации сайта и его более удобного использования. Вы можете запретить cookies в настройках браузера.

Пожалуйста ознакомьтесь с политикой использования cookies.