QT mousePressEvent, monitoreo asíncrono de los eventos del mouse

En QT mousePressEvent es una clase que permite el monitoreo de los eventos que ocurren en el mouse o ratón. Por ejemplo, se puede monitorear al clic, presionar el botón, soltar el botón, mover el ratón, etc. La clase también nos proporciona la información de la coordenada donde ocurrió el evento. En el siguiente tutorial te indicaremos la sintaxis, como se usa y algunos ejemplos con QT Creator.

Sintaxis en C++:

  • void mousePressEvent(QMouseEvent *evento);
    • Parámetros de salida: Ninguno.
    • Parámetro de entrada: sera el tipo de evento que estemos monitoreando, no es necesario indicarlo.

Biblioteca necesaria:

  • #include <QMouseEvent>

 

Ejemplo – Diseñar un contador que detecte los clics del mouse con QT mousePressEvent.

Para el primer ejemplo, se diseñará un contador utilizando a un lcdNumber. Para esto pasaremos a crear un proyecto nuevo en QT Creator. Entonces en este proyecto nuevo se agregarán 5 elementos, un lcdNumber y 4 etiquetas, como se muestra en la siguiente imagen:

QT Ejemplo de mousepressEvent

 

Paso # 1 – Agregar 4 etiquetas y 1 lcdNumber

Para este paso se modificaron las etiquetas (label) para agregarles un perimetro.

Paso # 2. Agregar la biblioteca al código de MainWindow.cpp  #include <QMouseEvent>

Paso #3. Agregar a la siguiente función en MainWindow.cpp

  • void MainWindow::mousePressEvent(QMouseEvent *event){   }

Paso # 4 – Agregar en el archivo de MainWindow.h la cabecera de la función anterior

  • public slots:
  • void mousePressEvent(QMouseEvent *event);

Paso # 5 – Agregar a la siguiente variable global

  • int contador = 0;

Paso # 6 – Agregar el siguiente código a la función de mousePressEvent

El siguiente código verifique que se haya generado el evento de presionar el botón del mouse. Esto es la primera sentencia del if. Por lo tanto si esta es valida (verdadero), entonces incrementa una variable contador que esta declarada globalmente. Cambien mostrara la coordenada del mouse en las etiquetas correspondientes y el valor del contador lo pasara al display. Para esto ultimo, se realiza una conversión del numero entero a una variable QString.

  • if(event->MouseButtonPress){
  • contador++;
  • ui->lcdNumber->display(contador);
  • ui->label_3->setText(QString::number(event->x()));
  • ui->label_4->setText(QString::number(event->y()));
  • }

 

Descargar el proyecto completo

https://hetpro-store.com/TUTORIALES/EjemplosProgramas/QT-MousePressEvent.zip

 

 

Autor: Dr. Rubén Estrada Marmolejo

2 Comments

  1. Cristopher mayo 20, 2018
    • Ruben mayo 20, 2018

Escríbenos tus dudas o comentarios

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Usamos Cookies en nuestro sitio WEB

Por favor confirma, si aceptas nuestras cookies de rastreo. También puedes negar el uso de cookies de rastreo y seguir navegando sin que ninguna información sea enviada a servicios de terceros.