Agregamos la siguiente linea en el archivo de cabecera para reimplementar la funcion eventFilter.
//Filtrar los eventos
bool eventFilter(QObject *obj, QEvent *event);
en el archivo cpp implementamos la funcion.
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
//Filtrar los eventos
bool eventFilter(QObject *obj, QEvent *event);
en el archivo cpp implementamos la funcion.
bool MainWindow::eventFilter(QObject *obj, QEvent *event)
{
//Si el evento es del Tipo Keypress
if (event->type() == QEvent::KeyPress) {
//Hacemos un Cast
QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event);
qDebug("Tecla Presionada %d", keyEvent->key());
return true;
} else {
//
return QObject::eventFilter(obj, event);
}
}
Ademas incluir en el archivo cpp los siguientes archivos.#include <QKeyEvent>
#include <QDebug>
Ahora vamos instalar el eventFilter, es decir, en que objecto queremos hacer
el filtro de eventos. Para eso colocamos la siguiente linea de codigo en el
constructor de la clase.
ui->lineEdit->installEventFilter(this);
Entonces el archivo quedaria asi.
#include "mainwindow.h" #include "ui_mainwindow.h" #include <QDebug> #include <QKeyEvent> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->lineEdit->installEventFilter(this); } MainWindow::~MainWindow() { delete ui; } bool MainWindow::eventFilter(QObject *obj, QEvent *event) { if (event->type() == QEvent::KeyPress) { //and here put your own logic!! QKeyEvent *keyEvent = static_cast<QKeyEvent *>(event); qDebug("Ate key press %d", keyEvent->key()); return true; } else { // standard event processing return QObject::eventFilter(obj, event); } }
Al Ejecutar y digitar en la aplicacion en la ventana Output debe salir un resultado
similar al de la siguiente imagen.
Nota: EL Debug sirve para mostrar los resultados en la consola de Qt Creator
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.