设计网站账号,flat movie wordpress,郴州网红打卡景点,小程序源码破解新建项目 加标签控件 当鼠标进去#xff0c;显示【鼠标进入】#xff0c;离开时显示【鼠标离开】
将QLable提升成自己的控件#xff0c;然后再去捕获
添加文件 改继承的类名 提升类 同一个父类#xff0c;可以提升 效果 现在代码就和Qlabel对应起来了。
在.h中声明…新建项目 加标签控件 当鼠标进去显示【鼠标进入】离开时显示【鼠标离开】
将QLable提升成自己的控件然后再去捕获
添加文件 改继承的类名 提升类 同一个父类可以提升 效果 现在代码就和Qlabel对应起来了。
在.h中声明.cpp中实现 #include mylabel.h
#include QDebugMyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{}// 鼠标进入
void MyLabel::enterEvent(QEvent* ) {qDebug() 鼠标进入;
}// 鼠标离开
void MyLabel::leaveEvent(QEvent* ) {qDebug() 鼠标离开;
}测试 鼠标的移动、按下、松开事件 // 鼠标移动事件virtual void mouseMoveEvent(QMouseEvent *ev) override;// 鼠标按下事件virtual void mousePressEvent(QMouseEvent *ev) override;// 鼠标松开事件virtual void mouseReleaseEvent(QMouseEvent *ev) override;
实现 #include mylabel.h
#include QDebugMyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{}// 鼠标进入
void MyLabel::enterEvent(QEvent* ) {qDebug() 鼠标进入;
}// 鼠标离开
void MyLabel::leaveEvent(QEvent* ) {qDebug() 鼠标离开;
}// 鼠标移动事件
void MyLabel::mouseMoveEvent(QMouseEvent *ev) {qDebug() 鼠标移动;
}
// 鼠标按下事件
void MyLabel::mousePressEvent(QMouseEvent *ev) {qDebug() 鼠标按下;
}
// 鼠标松开事件
void MyLabel::mouseReleaseEvent(QMouseEvent *ev) {qDebug() 鼠标松开;
}测试 坐标信息基于控件的坐标系 #include mylabel.h
#include QDebug
#include QMouseEventMyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{}// 鼠标进入
void MyLabel::enterEvent(QEvent* ) {qDebug() 鼠标进入;
}// 鼠标离开
void MyLabel::leaveEvent(QEvent* ) {qDebug() 鼠标离开;
}// 鼠标移动事件
void MyLabel::mouseMoveEvent(QMouseEvent *ev) {qDebug() 鼠标移动 ;
}
// 鼠标按下事件
void MyLabel::mousePressEvent(QMouseEvent *ev) {// 格式化字符串方式QString str QString(鼠标按下, x %1, y %2).arg(ev-x()).arg(ev-y());qDebug() str;
}
// 鼠标松开事件
void MyLabel::mouseReleaseEvent(QMouseEvent *ev) {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;} else {qDebug() 右键按下;}}
效果 全部改成按左键有输出
// 鼠标移动事件
void MyLabel::mouseMoveEvent(QMouseEvent *ev) {// 格式化字符串方式if (ev-button() Qt::LeftButton) {QString str QString(鼠标移动, x %1, y %2).arg(ev-x()).arg(ev-y());qDebug() str;}
}
// 鼠标按下事件
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;}
}
效果 移动是没有输出的。按下和松开是一瞬间的而移动不是一瞬间的是联合的。使用buttons和
// 鼠标移动事件
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;}
}
效果 鼠标不点下去移动。设置鼠标追踪的状态默认为false在构造函数中设置
#include mylabel.h
#include QDebug
#include QMouseEventMyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{// 设置鼠标追踪状态默认是falsethis-setMouseTracking(true);
}// 鼠标进入
void MyLabel::enterEvent(QEvent* ) {qDebug() 鼠标进入;
}// 鼠标离开
void MyLabel::leaveEvent(QEvent* ) {qDebug() 鼠标离开;
}// 鼠标移动事件
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;
// }QString str QString(鼠标移动, x %1, y %2).arg(ev-x()).arg(ev-y());qDebug() str;}
// 鼠标按下事件
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;}
}效果