我有一个应该跟随鼠标的浮动小部件。现在我有另一个小部件,它有时会改变它的位置。
在任何其他小部件调整大小之前,一切正常。更改后我的坐标总是误入歧途并且浮动小部件被移动,它漂浮在离鼠标一定距离的地方。我注意到这种转变以某种方式与窗口大小有关,当尺寸变大时它会增长。
我用 传递给小部件鼠标坐标QCursor::pos();
,我还尝试QPoint
从其他背景小部件发送,它应该在上面浮动,mouseMoveEvent(QMouseEvent *event)
然后QPoint{ mapToGlobal( { event->pos() } )};
。它们都渲染相同的坐标,并且发生相同的移位。
例如在一个小窗户上
- 漂浮物的坐标
QPoint(255,136)
- 另一个小部件的坐标:
QPoint(0,0)
- 来自另一个小部件的 MapToGlobal:
QPoint(255,136)
在一个大窗口上:
- 漂浮物的坐标
QPoint(205,86)
- 另一个小部件的坐标:
QPoint(0,0)
- 来自另一个小部件的 MapToGlobal:
QPoint(205,86)
无法掌握问题,为什么它会渲染错误的坐标。该系统是Qt 5.12.3。任何帮助将不胜感激。
UPD:最小的可重现示例。
。H
class Area : public QWidget
{
Q_OBJECT
public:
void moveArea();
};
.cpp
void moveArea::Area()
{
move(QCursor::pos());
}