- [Descripción]: Video de referencia https://www.bilibili.com/video/BV1g4411H78N?from=search&seid=6291131983490103239
Eventos comunes del ratón
Método para realizar
- Paso 1, arrastre un control TextLab
- Dado que estos eventos del mouse son funciones virtuales y están protegidos, deben reescribirse.
- Pero el código fuente de QLabel no se puede definir en este momento, podemos heredar QLabel y luego reescribirlo .
- Paso 2, haga clic con el botón derecho en el proyecto para agregar la clase C ++
- Paso 3, modificar el archivo correspondiente a MyLabel (queremos reescribir QLabel, pero sin esta opción de herencia, solo se puede heredar QWidget)
- Paso 4, copie el nombre de MyLabel, abra el archivo de interfaz de usuario creado en el paso 1, seleccione el control TextLab y haga clic derecho para promoverlo a
- Paso 5. En el archivo de encabezado MyLabel, declare reescribir el evento del mouse
//鼠标进入事件 void enterEvent(QEvent *); //鼠标离开事件 void leaveEvent(QEvent *); //鼠标按下事件 void mousePressEvent(QMouseEvent *ev); //鼠标释放事件 void mouseReleaseEvent(QMouseEvent *ev); //鼠标移动事件 void mouseMoveEvent(QMouseEvent *ev);
- En el archivo fuente de MyLabel
//鼠标进入事件 void MyLabel::enterEvent(QEvent *) { qDebug() << "鼠标进入了"; } //鼠标离开事件 void MyLabel::leaveEvent(QEvent *) { qDebug() << "鼠标离开了"; } //鼠标按下事件 void MyLabel::mousePressEvent(QMouseEvent *ev) { //鼠标左键按下 打印信息 if(ev->button() == Qt::LeftButton) { QString str = QString("鼠标按下了 x = %1 y = %2 " ).arg(ev->x()).arg(ev->y()); qDebug() << str; } } //鼠标释放事件 void MyLabel::mouseReleaseEvent(QMouseEvent *ev) { if(ev->button() == Qt::LeftButton) { QString str = QString("鼠标释放了 x = %1 y = %2 " ).arg(ev->x()).arg(ev->y()); qDebug() << str; } } //鼠标移动事件 void MyLabel::mouseMoveEvent(QMouseEvent *ev) { if(ev->buttons() & Qt::LeftButton) { QString str = QString("鼠标移动了 x = %1 y = %2 " ).arg(ev->x()).arg(ev->y()); qDebug() <<str; } }