Saltar al contenido

Teclado en pantalla en Qt 5

Solución:

Entiendo que hay dos desafíos que tendrías:

  1. Recibir notificaciones sobre cuándo mostrar / ocultar el teclado en pantalla, según el enfoque en los widgets de texto
  2. Cómo publicar un evento de pulsación de teclas en los widgets de texto

RESPUESTA

  1. En cuanto al primero, podrías usar QObject::InstallEventFilter() en los widgets a los que desea proporcionar el servicio de teclado. A continuación, puede buscar el mouseReleaseEvent siguiendo las líneas del código Qt en el enlace.
  2. Esto se puede lograr usando QCoreApplication::postEvent()

Como para QPlatformInputContext, obtenga el ejemplo de un teclado virtual Qt aquí.

Me tomó bastante tiempo descubrir cómo hacer esto en QT5 sin qml y demasiado trabajo. Así que pensé en compartir:

#include <QCoreApplication>
#include <QGuiApplication>
#include <QKeyEvent>

void MainWindow::on_pushButton_clicked()
{
   Qt::Key key = Qt::Key_1;;

   QKeyEvent pressEvent = QKeyEvent(QEvent::KeyPress, key, Qt::NoModifier, QKeySequence(key).toString());
   QKeyEvent releaseEvent = QKeyEvent(QEvent::KeyRelease, key, Qt::NoModifier);
   QCoreApplication::sendEvent(QGuiApplication::focusObject(), &pressEvent);
   QCoreApplication::sendEvent(QGuiApplication::focusObject(), &releaseEvent);
}

La pista aquí es que al hacer clic en los botones (si creara manualmente su teclado), se inicia un evento de envío al objeto actual que tiene el foco (por ejemplo, un cuadro de texto). Por supuesto, podría codificar un cuadro de texto, pero eso solo funciona si solo tiene una entrada para usar su teclado.

Lo último de lo que debe asegurarse es establecer la política de enfoque de los botones de su teclado en NoFocus, para evitar que el enfoque cambie cuando se presiona el teclado.

Los créditos van a https://www.wisol.ch/w/articles/2015-07-26-virtual-keyboard-qt/

Espero que esto ayude a alguien.

Un buen ejemplo se da aquí http://tolszak-dev.blogspot.com.tr/2013/04/qplatforminputcontext-and-virtual.html usa Qt Quick para el teclado en pantalla. Usted puede comprobarlo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *