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 comentarios en «QT mousePressEvent, monitoreo asíncrono de los eventos del mouse»

  1. Tengo interés sobre como sobreescribir archivos en QT con la ayuda de QIODevice::WriteOnly y QIODevice::ReadOnly.
    Por lo que sé, se debe hacer por medio de dos archivos, uno auxiliar y el original, pero por más que lo intento no puedo adaptarlo.
    Si hay alguna forma de usarlo con la librería QFile, QTextStream, y/u otras, me parece excelente corroborarlo.

    1. Hola, quieres sobre-escribir y borrar el contenido de un archivo? o sobre-escribir y escribir en la ultima fila conservando el contenido anterior?, saludos.

Deja una respuesta

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