c++,qt怎么判断鼠标点击是否在某个点上?
重写鼠标按下事件函数,然后可以在里面使用globalPos或者pos进行获取对应坐标,就可以通过这些坐标与自己指定的的坐标进行比较,如果 x 和 y 都相等,那就确定鼠标点击的这个点就是你指定的这个点了!
头文件:
#include < QMouseEvent >
#include < QPoint >
protected: // 重写此函数
void mousePressEvent(QMouseEvent *event) override;
// 鼠标按下事件
void MouseEvent::mousePressEvent(QMouseEvent *event) {
// 鼠标左键按下
if (event->button() == Qt::LeftButton) {
QPoint point_1 = event->globalPos() ; // 这个获取到的坐标是全局的,即(0, 0)是在电脑的左上角
QPoint point_2 = event->pos(); // 这个获取到的坐标是相对于运行窗口的,即(0, 0)是你运行时程序的窗口
if (point_2.x() == 10 && point_2.y() == 10) {
qDebug() << "鼠标点击在指定点上!";
}
// 鼠标中键按下
} else if (event->button() == Qt::MidButton) {
// 鼠标右键按下
} else if (event->button() == Qt::RightButton) {
}
}
问题解决,点个采纳吧!
用mousePressEvent事件对坐标进行处理, 坐标获取可以用 event->pos()
在鼠标移动或者点击的槽函数中获取鼠标的位置(用pos()函数),判断两个位置是否相等即可(一般不会完全相等,一般会有一个范围,比如目标点是A,鼠标如果在以A为圆心,半径为r的范围内,认为鼠标在这个点上,如果只用x和y相等来判断,几乎做不到,鼠标移动没有那么精确)