Клавиатура в 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 позволяет настроить внешний вид кнопок, подписи к ним, цвета и видимость.
С помощью обработчиков сигналов onClicked и прочих можно отследить действия пользователя
с клавиатурой.