原因:在鼠标移动事件(QEvent::MouseMove)中,判断鼠标是否按下(m_mousePressed)。当鼠标按下并点击一个连接时,让后鼠标弹起后,m_mousePressed依然为true,所以窗口会移动(this->move(m_originGeo.topLeft()+curPosGlobal-m_originPosGlobal);)。
处理方法:在事件过滤函数中添加鼠标离开窗口部件边缘事件(QEvent::Leave),当鼠标离开窗口部件后,处理与鼠标抬起事件一致。
代码如下:
else if(eventType == QEvent::Leave)
{
m_Drag = false;
drg = false;
m_mousePressed = false;
m_regionPressed = Unknown;
this->setCursor(Qt::ArrowCursor);
}