Reimplemented重写
如果重写某个组件的事件,查找一些方法

image.png

1.鼠标信息

鼠标进入:enterEvent
鼠标离开:leaveEvent
鼠标按下:mousePressEvent
鼠标释放:mouseReleaseEvent
鼠标移动:mouseMoveEvent

通过ev 来获取具体信息:
ev->x() x坐标
ev->y() y坐标

判断按键ev->button() = Qt::LeftButton
判断联合按键ev->buttons() & Qt::LeftButton

2.格式化字符串

//QString str = QString(“鼠标按下了 x = %1 y = %2”).arg(ev->x()).arg(ev->y());

  1. #include "mylabel.h"
  2. #include <QDebug>
  3. Mylabel::Mylabel(QWidget *parent) : QLabel(parent)
  4. {
  5. //开启鼠标实时的追踪 如果不开启 默认是按下鼠标移动才会触发mouseMoveEvent
  6. setMouseTracking(true);
  7. }
  8. //鼠标进入时间
  9. void Mylabel::enterEvent(QEvent *event)
  10. {
  11. qDebug() << "鼠标进入";ww
  12. }
  13. //鼠标离开时间
  14. void Mylabel::leaveEvent(QEvent *event)
  15. {
  16. qDebug() << "鼠标离开";
  17. }
  18. //鼠标移动
  19. void Mylabel::mouseMoveEvent(QMouseEvent *ev)
  20. {
  21. // &
  22. if(ev->buttons() & Qt::LeftButton)
  23. qDebug() << "鼠标移动";
  24. }
  25. //鼠标按下
  26. void Mylabel::mousePressEvent(QMouseEvent *ev)
  27. {
  28. //QString格式化输出 1 2 对应的是位置 位置是基于控件的
  29. //QString str = QString("鼠标按下了 x = %1 y = %2").arg(ev->x()).arg(ev->y());
  30. //相当于屏幕的
  31. //鼠标左键
  32. if(ev->button() == Qt::LeftButton)
  33. {
  34. QString str = QString("鼠标按下了 x = %1 y = %2").arg(ev->globalX()).arg(ev->globalY());
  35. qDebug() << str;
  36. }
  37. }
  38. //鼠标释放
  39. void Mylabel::mouseReleaseEvent(QMouseEvent *ev)
  40. {
  41. qDebug() << "鼠标释放";
  42. }