如何获取相对于QScrollArea小部件的鼠标按下位置

问题描述 投票:0回答:1

如果我在 QScrollArea 中有一个宽的小部件,并且在其上按下鼠标,那么我会得到相对于滚动区域的鼠标位置(在

mousePressEvent()
中)(如果我滚动,它会发生变化)。

如何获取鼠标相对于滚动区域内的宽小部件的位置?

我尝试使用功能组合

mapTo()
parentWidget()
viewport()
但没有成功。

qt mouseevent qscrollarea mouse-position mousepress
1个回答
0
投票

目前我有三种类似的方法,对我来说效果很好。

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
}
© www.soinside.com 2019 - 2024. All rights reserved.