QT在mousePressEvent函数内计算鼠标位置,在换算到显示图像的Qlabel对应的像素点
时间: 2024-02-24 13:55:46 浏览: 338
你可以使用QMouseEvent对象中的pos()方法获取鼠标点击的位置,然后使用QLabel的mapFromGlobal()方法将鼠标位置转换为相对于QLabel的坐标系。接着,你可以使用QLabel的width()和height()方法获取QLabel的宽度和高度,计算出鼠标在QLabel中的位置占比,最后乘以QLabel中图像的宽度和高度,就可以得到鼠标在图像中对应的像素点坐标了。
以下是示例代码:
```cpp
void MyLabel::mousePressEvent(QMouseEvent *event)
{
QPoint pos = event->pos(); // 获取鼠标点击位置
pos = mapFromGlobal(pos); // 将鼠标位置转换为相对于QLabel的坐标系
int labelWidth = width();
int labelHeight = height();
int imgWidth = pixmap()->width();
int imgHeight = pixmap()->height();
int x = pos.x() * imgWidth / labelWidth; // 计算鼠标在图像中的横坐标
int y = pos.y() * imgHeight / labelHeight; // 计算鼠标在图像中的纵坐标
qDebug() << "Mouse clicked at (" << x << ", " << y << ")";
}
```
其中,MyLabel是继承自QLabel的自定义类,pixmap()方法用于获取当前QLabel显示的图像。
阅读全文