En esta página

InputPanel QML Type

Proporciona la interfaz de usuario del teclado virtual. Más...

Import Statement: import QtQuick.VirtualKeyboard
Inherits:

Item

Propiedades

Señales

Descripción detallada

El tamaño del teclado se calcula automáticamente a partir de la anchura disponible; es decir, el teclado mantiene la relación de aspecto especificada por el estilo actual. Por lo tanto, la aplicación sólo debe establecer las coordenadas width y y del InputPanel, y no height.

Al igual que con el resto de tipos QML proporcionados por el módulo, la variable de entorno QT_IM_MODULE debe establecerse en qtvirtualkeyboard antes de utilizar InputPanel. Para más información, véase Cargar el Plugin.

Nota: Sólo puede tener una instancia de InputPanel en su aplicación. El panel no será bloqueado por diálogos modales, pero puede ser oscurecido por elementos con un valor superior a z.

Documentación de Propiedades

active : bool [since QtQuick.VirtualKeyboard 2.0]

Esta propiedad refleja el estado activo del panel de entrada. El teclado debe hacerse visible al usuario cuando esta propiedad es true.

Esta propiedad fue introducida en QtQuick.VirtualKeyboard 2.0.

externalLanguageSwitchEnabled : bool [since QtQuick.VirtualKeyboard 2.4]

Esta propiedad activa el mecanismo de cambio de idioma externo. Cuando esta propiedad es true, el teclado virtual no mostrará la ventana emergente de idioma incorporada, sino que emitirá la señal externalLanguageSwitch en su lugar. La aplicación puede manejar esta señal y mostrar un diálogo de selección de idioma personalizado en su lugar.

Esta propiedad se introdujo en QtQuick.VirtualKeyboard 2.4.

Documentación de la señal

[since QtQuick.VirtualKeyboard 2.4] externalLanguageSwitch(var localeList, int currentIndex)

Esta señal se emite cuando externalLanguageSwitchEnabled es true y el usuario pulsa la tecla de cambio de idioma.

Sirve como gancho para mostrar un diálogo de idioma personalizado en lugar de la ventana emergente de idioma incorporada en el teclado virtual.

El parámetro localeList contiene una lista de nombres de configuración regional entre los que elegir. Para obtener más información sobre un idioma concreto, utilice la función Qt.locale(). El currentIndex es el índice de la configuración regional actual en el localeList. Este elemento debe resaltarse como el elemento actual en la interfaz de usuario.

Para seleccionar un nuevo idioma, utilice la propiedad VirtualKeyboardSettings.locale.

A continuación se muestra un ejemplo que demuestra la implementación de un diálogo de idioma personalizado:

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"
                }
            }
        }
    }
}

El diálogo se declararía entonces:

LanguageDialog {
    id: languageDialog
    width: 400
    height: 400
}

En la aplicación InputPanel, añada el siguiente código:

InputPanel {
    id: inputPanel
    externalLanguageSwitchEnabled: true
    onExternalLanguageSwitch: languageDialog.show(localeList, currentIndex)
    // ...
}

El diálogo personalizado se mostrará ahora cuando se pulse la tecla de cambio de idioma.

Nota: El manejador correspondiente es onExternalLanguageSwitch.

Esta señal fue introducida en QtQuick.VirtualKeyboard 2.4.

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.