QT在mousePressEvent函数内计算鼠标位置,在换算到显示图像的QLabel中
时间: 2024-02-24 20:55:14 浏览: 142
qt鼠标事件
可以使用QLabel的mapFromGlobal函数将鼠标位置转换为相对于QLabel的坐标,具体代码如下:
```cpp
void MyLabel::mousePressEvent(QMouseEvent *event)
{
// 获取鼠标位置
QPoint globalPos = event->globalPos();
// 将鼠标位置转换为相对于label的坐标
QPoint labelPos = mapFromGlobal(globalPos);
// 获取label的大小
QSize labelSize = size();
// 计算鼠标位置在label中的比例
qreal xRatio = (qreal)labelPos.x() / labelSize.width();
qreal yRatio = (qreal)labelPos.y() / labelSize.height();
// 在label中显示比例
qDebug() << "鼠标位置比例:" << xRatio << ", " << yRatio;
}
```
在上面的代码中,我们首先获取鼠标的全局坐标,然后使用QLabel的mapFromGlobal函数将其转换为相对于label的坐标。接着,我们获取label的大小,计算出鼠标位置在label中的比例,并在控制台输出。
阅读全文