Manejo de eventos de clic del mouse Qt: muestra la posición del clic del mouse (ejemplo completo)

Tutorial práctico de introducción a Qt (Tabla de contenido)

Artículo precursor:

Qt Creator crea el programa de ventana predeterminado de Qt (recomendado)

¿Qué es el evento?

Los eventos son un término general para cosas o acciones que ocurren dentro o fuera de la aplicación y que varias aplicaciones necesitan conocer.

Programa de ventana GUI controlado por eventos.

Por ejemplo, haga clic con el mouse y presione el botón. En Qt se utiliza un objeto para representar un evento, que hereda de la clase QEvent.

Eventos comunes


Como eventos del mouse (como hacer clic con el botón izquierdo del mouse), eventos del teclado (como presionar una tecla en el teclado), eventos cronometrados, eventos del menú contextual, eventos de cierre, eventos de arrastrar y soltar y eventos de dibujo.

Eventos comunes

void paintEvent(QPaintEvent *);//自定义绘制窗口内容

Ahora que ocurre un evento, necesitamos procesarlo, al igual que cuando hacemos clic con el botón izquierdo del mouse, el programa nos brinda retroalimentación, entonces, ¿cómo procesamos el evento?

Manejo de eventos

La clase QWidget proporciona muchas funciones virtuales esperando que las anulemos en subclases. Por lo general, manejamos eventos típicos de algunos widgets específicos anulando estas funciones.

Por supuesto, también podemos instalar filtros de eventos en el objeto. Utilice filtros de eventos para manejar diferentes eventos para diferentes subcomponentes al mismo tiempo en una clase de interfaz.

Manejo de eventos de presión del mouse (ejemplo)

Crear proyecto

Primero, cree un programa de ventana predeterminado de Qt llamado QtMousePressEvent.

Referencia: Qt Creator crea el programa de ventana predeterminado de Qt

Agregar función de respuesta a eventos del mouse

Intentemos mostrar las coordenadas del mouse respondiendo a los eventos del mouse de Qt.

Abra Qt Creator >> Editar >> Proyecto >> Encabezados >> mainwindow.h

Seleccionar clase MainWindow >> Refactor >> Insertar función virtual de clases base

Como se muestra abajo:

Seleccione QWidget >> mousePressEvent

Opciones de inserción:

>> Insertar definiciones en el archivo de implementación >> Aceptar

Como se muestra abajo:

Mostrar posición del ratón

Agregue un control a la ventana para mostrar la posición actual del mouse.

Abra Formularios >> mainwindow.ui (haga doble clic para abrir)

Coloque una etiqueta en el archivo Ui llamado labelmove para mostrar el movimiento de coordenadas

Modifique el nombre del control Etiqueta a label_mouse_position

Mostrar dónde se presiona el mouse

Fuentes abiertas >> ventana principal.cpp

Agregar archivo de encabezado incluido

>> #incluir <QMouseEvent>

>> Ventana Principal:: mousePressEvent

Agregue el siguiente código dentro de la función:

void MainWindow::mousePressEvent(QMouseEvent *event)
{
    ui->label_mouse_position->move(event->pos());//鼠标点击哪里,label就在哪里显示
    auto pos = event->pos();//获得鼠标点击的位置
    QString text = QString("mouse postion (%1, %2)").arg(pos.x()).arg(pos.y());//生成文本内容
    ui->label_mouse_position->setText(text);//设置label的内容,用于显示
    ui->label_mouse_position->adjustSize();//根据内容调整label的大小,以显示全部内容
}

Demostración del efecto de carrera

Descarga de código

Nube Baidu

Enlace: https://pan.baidu.com/s/1XgN49hIvVhOLKuB3iLNaJQ

Código de extracción: 1234

Nube de código de alojamiento

https://gitee.com/carea/learn-qt-with-code/tree/master/QtMousePressEvent

actualizar registro

2023-08-13 El formateo de QString utiliza un método más seguro y estandarizado

Supongo que te gusta

Origin blog.csdn.net/ClamReason/article/details/132678757
Recomendado
Clasificación