Spec-Zone.ru › Qt 5.11

Тип QML InputPanel

Предоставляет пользовательский интерфейс виртуальной клавиатуры. Подробнее...

Заявление об импорте: import QtQuick.VirtualKeyboard 2.3
Наследует:

Item

  • Список всех членов, включая унаследованные

Свойства

  • 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API