En esta página

Guía de implantación

Visión general de

Este documento describe cómo desplegar y utilizar el plugin Qt Virtual Keyboard con aplicaciones Qt.

Despliegue

Los diferentes plugins y archivos de Qt Virtual Keyboard se despliegan en las siguientes ubicaciones:

ElementoRuta de instalación DesktopRuta de instalación de Boot2Qt
qtvirtualkeyboardplugin plugin de contexto de entrada de plataforma<QT_INSTALL_PLUGINS>/platforminputcontexts/system/plugins/platforminputcontexts
qtvkbplugin plugin QML<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/system/qml/QtQuick/VirtualKeyboard
qtvkbcomponentsplugin plugin QML<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Components/system/qml/QtQuick/VirtualKeyboard/Components
qtvkblayoutsplugin plugin QML<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Layouts/system/qml/QtQuick/VirtualKeyboard/Layouts
qtvkbpluginsplugin QML plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Plugins/system/qml/QtQuick/VirtualKeyboard/Plugins
extensión QML plugins<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Plugins/*/system/qml/QtQuick/VirtualKeyboard/Plugins/*
qtvkbsettingsplugin QML plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Settings/system/qml/QtQuick/VirtualKeyboard/Settings
qtvkbstylesplugin QML plugin<QT_INSTALL_QML>/QtQuick/VirtualKeyboard/Styles/system/qml/QtQuick/VirtualKeyboard/Styles
Datos del teclado virtual<QT_INSTALL_DATA>/qtvirtualkeyboard/system/qtvirtualkeyboard

Dependencias

Más información en Despliegue de las bibliotecas de Qt.

Método de integración

Qt Virtual Keyboard soporta actualmente dos métodos alternativos de integración para usar el plugin:

  • Desktop: no requiere cambios en las aplicaciones existentes. El teclado virtual está disponible para todas las aplicaciones Qt del sistema.

    En este método de integración, el teclado se muestra en una ventana dedicada de nivel superior.

  • ApplicationEl teclado virtual se integra en la propia aplicación Qt mediante la instanciación de un elemento InputPanel en QML.

    Este método es obligatorio en entornos donde no hay soporte para múltiples ventanas de nivel superior (como dispositivos embebidos), pero también puede utilizarse en aplicaciones de escritorio.

    Este método también puede ser utilizado por los compositores Qt Wayland Compositor para proporcionar un teclado virtual del lado del servidor. Véase la sección siguiente para más detalles.

El método de integración es seleccionado automáticamente por los archivos de proyecto. Sin embargo, en entornos de escritorio, es posible anular el método de integración del escritorio y utilizar el método de integración de la aplicación en su lugar, utilizando la variable de entorno QT_VIRTUALKEYBOARD_DESKTOP_DISABLE, o añadiendo -no-vkb-desktop a la línea de comandos configure.

Uso de Qt Virtual Keyboard con Qt Wayland

Esta sección explica cómo utilizar Qt Virtual Keyboard para interactuar con el ejemploQt Widgets Line Edits utilizando el ejemplo Fancy Compositor como compositor.

Usaremos Ubuntu 18.04 para ejecutar el ejemplo, usando X11 como sistema de ventanas. El compositor de ejemplo (fancy-compositor) se abrirá como una ventana dentro de una sesión X11.

  1. Inicie el compositor:
    QT_XCB_GL_INTEGRATION=xcb_egl QT_WAYLAND_CLIENT_BUFFER_INTEGRATION=xcomposite-egl \
    QT_IM_MODULE=qtvirtualkeyboard ./fancy-compositor -platform xcb
  2. Antes de ejecutar la aplicación cliente, asegúrese de que QT_IM_MODULE está deshabilitado:
    unset QT_IM_MODULE
  3. Inicie el ejemplo Line Edits como cliente:
    ./lineedits -platform wayland
  4. Haga clic en una línea de edición y Qt Virtual Keyboard's panel de entrada se abrirá.

Si se encuentran problemas, las siguientes variables de entorno se pueden establecer cuando se ejecuta el compositor para obtener la salida de depuración que puede ayudar a diagnosticar el problema:

WAYLAND_DEBUG=1
QT_LOGGING_RULES="qt.virtualkeyboard=true;qt.qpa.wayland*=true"

Carga del Plugin

En ambos métodos de integración, la aplicación debe utilizar la variable de entorno QT_IM_MODULE para cargar el plugin. Por ejemplo

$ QT_IM_MODULE=qtvirtualkeyboard myapp

o en la función main():

qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard"));

En el método de integración de escritorio, este paso es todo lo que se requiere para utilizar Qt Virtual Keyboard. En el método de integración de aplicaciones, la aplicación debe crear una instancia de InputPanel como se explica en el capítulo siguiente.

Creación de InputPanel

El siguiente ejemplo muestra cómo crear un InputPanel y cómo dividir el área de la pantalla con el contenedor de la aplicación.

import QtQuick
import QtQuick.VirtualKeyboard

Item {
    id: root
    Item {
        id: appContainer
        anchors.left: parent.left
        anchors.top: parent.top
        anchors.right: parent.right
        anchors.bottom: inputPanel.top
        ...
    }
    InputPanel {
        id: inputPanel
        y: Qt.inputMethod.visible ? parent.height - inputPanel.height : parent.height
        anchors.left: parent.left
        anchors.right: parent.right
    }
}

El panel de entrada debe ser un elemento hermano junto al contenedor de la aplicación. Es importante no poner el panel de entrada dentro del contenedor de la aplicación, ya que entonces se solaparía con el contenido de la aplicación. Además, la altura del panel de entrada se actualizará automáticamente en función de la anchura disponible; la relación de aspecto del panel de entrada es constante.

Variables de entorno

Hay varias variables de entorno definidas por el módulo que se enumeran a continuación:

VariablePropósito
QT_VIRTUALKEYBOARD_HUNSPELL_DATA_PATHAnula la ubicación de los archivos de datos Hunspell.

La ubicación predeterminada depende del valor de QLibraryInfo::path(QLibraryInfo::DataPath). Por ejemplo, para las bibliotecas Qt creadas a partir del código fuente, podría ser qtbase/qtvirtualkeyboard/hunspell.

Consulte Integración de Hunspell para obtener más información.

QT_VIRTUALKEYBOARD_PINYIN_DICTIONARYAnula la ubicación del diccionario Pinyin.

Por defecto, el diccionario está incluido en los recursos del complemento.

Para desactivar la agrupación de recursos, añada -vkb-no-bundle-pinyin a la línea de comandos de Qt configure. En este escenario, la ubicación por defecto depende del valor de QLibraryInfo::path(QLibraryInfo::DataPath). Por ejemplo, para las bibliotecas Qt construidas desde el código fuente, podría ser qtbase/qtvirtualkeyboard/pinyin/dict_pinyin.dat.

QT_VIRTUALKEYBOARD_CANGJIE_DICTIONARYAnula la ubicación del diccionario Cangjie.

Por defecto, el diccionario se incluye en los recursos del complemento.

Para desactivar la agrupación de recursos, añade -vkb-no-bundle-tcime a la línea de comandos de Qt configure. En este caso, la ubicación predeterminada depende del valor de QLibraryInfo::path(QLibraryInfo::DataPath). Por ejemplo, para las bibliotecas Qt creadas a partir del código fuente, podría ser qtbase/qtvirtualkeyboard/tcime/dict_cangjie.dat.

QT_VIRTUALKEYBOARD_ZHUYIN_DICTIONARYAnula la ubicación del diccionario Zhuyin.

Por defecto, el diccionario está incluido en los recursos del complemento.

Para desactivar la agrupación de recursos, añada -vkb-no-bundle-tcime a la línea de comandos de Qt configure. En este escenario, la ubicación por defecto depende del valor de QLibraryInfo::path(QLibraryInfo::DataPath). Por ejemplo, para las bibliotecas Qt construidas desde el código fuente, podría ser qtbase/qtvirtualkeyboard/tcime/dict_zhuyin.dat.

QT_VIRTUALKEYBOARD_DICCIONARIO_DE_FRASEAnula la ubicación del diccionario de frases.

Por defecto, el diccionario se incluye en los recursos del complemento.

Para desactivar la agrupación de recursos, añada -vkb-no-bundle-tcime a la línea de comandos de Qt configure. En este escenario, la localización por defecto depende del valor de QLibraryInfo::path(QLibraryInfo::DataPath). Por ejemplo, para librerías Qt construidas desde el código fuente, podría ser qtbase/qtvirtualkeyboard/tcime/dict_phrases.dat.

QT_VIRTUALKEYBOARD_CERENCE_HWR_DB_PATHEspecifica la ubicación de la base de datos de escritura a mano Cerence Handwriting.

La ubicación de búsqueda predeterminada para la base de datos de escritura a mano Cerence son:

  • QT_VIRTUALKEYBOARD_CERENCE_HWR_DB_PATH
  • QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/cerence/handwriting"
  • ":/qt-project.org/imports/QtQuick/VirtualKeyboard/Cerence/Handwriting"

La variable de entorno puede contener múltiples rutas. Las rutas múltiples se separan con punto y coma en Windows y con dos puntos en otros sistemas operativos.

QT_VIRTUALKEYBOARD_XT9_LDB_PATHEspecifica la ubicación de las bases de datos XT9.

La ubicación de búsqueda predeterminada para los archivos LDB son:

  • QT_VIRTUALKEYBOARD_XT9_LDB_PATH
  • QLibraryInfo::location(QLibraryInfo::DataPath) + "/qtvirtualkeyboard/cerence/xt9"
  • ":/qt-project.org/imports/QtQuick/VirtualKeyboard/Cerence/Xt9"

Se pueden especificar rutas de búsqueda adicionales configurando esta variable de entorno. Las rutas múltiples se separan con punto y coma en Windows y con dos puntos en otros sistemas operativos.

Los archivos LDB son compartidos entre los plugins XT9 y Cerence Handwriting, por lo que esta variable de entorno afecta a ambos plugins.

QT_ESTILO_TECLADO_VIRTUALEspecifica la ubicación del estilo a utilizar con el teclado virtual.

Esto también se puede especificar en QML configurando VirtualKeyboardSettings::styleName, o en tiempo de compilación utilizando las Opciones de configuración.

QT_VIRTUALKEYBOARD_LAYOUT_PATHEspecifica la ubicación de los diseños que se utilizarán con el teclado virtual.
QT_VIRTUALKEYBOARD_DESKTOP_DISABLEDesactiva el método de integración con el escritorio.
QT_VIRTUALKEYBOARD_FORCE_EVENTS_WITHOUT_FOCUSHabilita Qt Virtual Keyboard para enviar eventos de teclado y utilizar la tecla Mayús sin tener ninguna entrada de texto en el foco.

Esta variable necesita ser explícitamente establecida en el entorno de ejecución de una aplicación que quiera beneficiarse de esto. Utilizar qputenv() en la propia aplicación no es suficiente.

© 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.