Reimplemented重写
如果重写某个组件的事件,查找一些方法
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());
#include "mylabel.h"
#include <QDebug>
Mylabel::Mylabel(QWidget *parent) : QLabel(parent)
{
//开启鼠标实时的追踪 如果不开启 默认是按下鼠标移动才会触发mouseMoveEvent
setMouseTracking(true);
}
//鼠标进入时间
void Mylabel::enterEvent(QEvent *event)
{
qDebug() << "鼠标进入";ww
}
//鼠标离开时间
void Mylabel::leaveEvent(QEvent *event)
{
qDebug() << "鼠标离开";
}
//鼠标移动
void Mylabel::mouseMoveEvent(QMouseEvent *ev)
{
// &
if(ev->buttons() & Qt::LeftButton)
qDebug() << "鼠标移动";
}
//鼠标按下
void Mylabel::mousePressEvent(QMouseEvent *ev)
{
//QString格式化输出 1 2 对应的是位置 位置是基于控件的
//QString str = QString("鼠标按下了 x = %1 y = %2").arg(ev->x()).arg(ev->y());
//相当于屏幕的
//鼠标左键
if(ev->button() == Qt::LeftButton)
{
QString str = QString("鼠标按下了 x = %1 y = %2").arg(ev->globalX()).arg(ev->globalY());
qDebug() << str;
}
}
//鼠标释放
void Mylabel::mouseReleaseEvent(QMouseEvent *ev)
{
qDebug() << "鼠标释放";
}