Тип QML InputPanel
Обеспечивает интерфейс виртуальной клавиатуры. Подробнее...
| Заявление об импорте: | import QtQuick.VirtualKeyboard 2.4 |
| Наследует: |
Свойства
- active : bool
- externalLanguageSwitchEnabled : bool
Сигналы
- externalLanguageSwitch(var, int)
Подробное описание
Размер клавиатуры автоматически вычисляется на основе доступной ширины; то есть, клавиатура сохраняет заданное текущим стилем соотношение сторон. Поэтому приложение должно устанавливать только координаты ширины и y width и y элемента InputPanel, а не высоту height.
Как и все остальные типы QML, предоставляемые модулем, переменная среды QT_IM_MODULE должна быть установлена в значение qtvirtualkeyboard перед использованием InputPanel. Дополнительную информацию см. в разделе Загрузка плагина.
Документация по свойствам
active : bool
Это свойство отражает активное состояние панели ввода. Клавиатура должна быть видимой для пользователя, когда это свойство равно true.
Это свойство было добавлено в QtQuick.VirtualKeyboard 2.0.
externalLanguageSwitchEnabled : bool
Это свойство включает механизм внешнего переключения языков. Когда это свойство равно true, виртуальная клавиатура не будет отображать встроенное всплывающее меню языков, но вместо этого будет испускать сигнал externalLanguageSwitch. Приложение может обрабатывать этот сигнал и отображать пользовательский диалог выбора языка вместо этого.
Это свойство было добавлено в QtQuick.VirtualKeyboard 2.4.
Документация по сигналам
externalLanguageSwitch(var = localeList, int = currentIndex)
Этот сигнал испускается, когда externalLanguageSwitchEnabled равен true и пользователь нажал клавишу переключения языков.
Он служит крючком для отображения пользовательского диалога выбора языка вместо встроенного всплывающего меню языков в виртуальной клавиатуре.
Параметр localeList содержит список названий языковых локалей, которые можно выбрать. Чтобы получить дополнительную информацию об определённом языке, используйте функцию Qt.locale(). currentIndex — индекс текущей локали в localeList. Этот элемент должен быть выделен как текущий элемент в пользовательском интерфейсе.
Для выбора нового языка используйте свойство VirtualKeyboardSettings.locale.
Ниже приведен пример реализации пользовательского диалога выбора языка:
Dialog {
id: languageDialog
title: "Select Input Language"
modality: Qt.ApplicationModal
function show(localeList, currentIndex) {
languageListModel.clear()
for (var i = 0; i < localeList.length; i++) {
languageListModel.append({localeName: localeList[i], displayName: Qt.locale(localeList[i]).nativeLanguageName})
}
languageListView.currentIndex = currentIndex
languageListView.positionViewAtIndex(currentIndex, ListView.Center)
languageDialog.visible = true
}
contentItem: ListView {
id: languageListView
model: ListModel {
id: languageListModel
function selectItem(index) {
VirtualKeyboardSettings.locale = languageListModel.get(index).localeName
languageDialog.visible = false
}
}
delegate: Item {
id: languageListItem
width: languageNameTextMetrics.width * 17
height: languageNameTextMetrics.height + languageListLabel.anchors.topMargin + languageListLabel.anchors.bottomMargin
Text {
id: languageListLabel
anchors.left: parent.left
anchors.top: parent.top
anchors.leftMargin: languageNameTextMetrics.height / 2
anchors.rightMargin: anchors.leftMargin
anchors.topMargin: languageNameTextMetrics.height / 3
anchors.bottomMargin: anchors.topMargin
text: languageNameFormatter.elidedText
color: "#5CAA15"
font {
weight: Font.Normal
pixelSize: 28
}
}
TextMetrics {
id: languageNameTextMetrics
font {
weight: Font.Normal
pixelSize: 28
}
text: "X"
}
TextMetrics {
id: languageNameFormatter
font {
weight: Font.Normal
pixelSize: 28
}
elide: Text.ElideRight
elideWidth: languageListItem.width - languageListLabel.anchors.leftMargin - languageListLabel.anchors.rightMargin
text: displayName
}
MouseArea {
anchors.fill: parent
hoverEnabled: true
onClicked: {
if (index === -1)
return
parent.ListView.view.currentIndex = index
parent.ListView.view.model.selectItem(index)
}
}
states: State {
name: "current"
when: languageListItem.ListView.isCurrentItem
PropertyChanges {
target: languageListLabel
color: "black"
}
}
}
}
} Затем диалог объявляется так:
LanguageDialog {
id: languageDialog
width: 400
height: 400
} В элементе InputPanel приложения добавьте следующий код:
InputPanel {
id: inputPanel
externalLanguageSwitchEnabled: true
onExternalLanguageSwitch: languageDialog.show(localeList, currentIndex)
// ...
} Теперь пользовательский диалог будет отображаться при нажатии клавиши переключения языков.
Этот сигнал был введён в QtQuick.VirtualKeyboard 2.4.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-5.12/qml-qtquick-virtualkeyboard-inputpanel.html