Тип QML InputPanel
Предоставляет пользовательский интерфейс виртуальной клавиатуры. Подробнее...
| Заявление об импорте: | import QtQuick.VirtualKeyboard 2.3 |
| Наследует: |
Свойства
- active : bool
- externalLanguageSwitchEnabled : bool
Сигналы
- externalLanguageSwitch(var, int)
Подробное описание
Размер клавиатуры автоматически рассчитывается на основе доступной ширины; то есть клавиатура сохраняет соотношение сторон, заданное текущим стилем. Поэтому приложение должно устанавливать только координаты ширины (width) и y (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/archives/qt-5.11/qml-qtquick-virtualkeyboard-inputpanel.html