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