如果我在 QScrollArea 中有一个宽的小部件,并且在其上按下鼠标,那么我会得到相对于滚动区域的鼠标位置(在
mousePressEvent()
中)(如果我滚动,它会发生变化)。
如何获取鼠标相对于滚动区域内的宽小部件的位置?
我尝试使用功能组合
mapTo()
、parentWidget()
、viewport()
但没有成功。
目前我有三种类似的方法,对我来说效果很好。
class MyWidget : public QScrollArea
{
// ...
};
void MyWidget::mousePressEvent(QMouseEvent *event)
{
qDebug() << widget()->mapFromGlobal(QCursor::pos()); // 1
qDebug() << widget()->mapFrom(viewport(), event->pos()); // 2
qDebug() << widget()->mapFromParent(event->pos()); // 3
}