移动Qt 5.15中的QWidget,光标卡在小工具的0,0处



我试图通过拦截QMouseEvent来移动QWidget,结果是:

void MyWidget::mousePressEvent(QMouseEvent *evt)
{
if(!ui.bar_horizontalFrame->underMouse()|| evt->button() != Qt::LeftButton) return;
if(ui.bar_horizontalFrame->underMouse())
{
oldPos = evt->globalPos() - evt->pos(); //QPoint
}
}
void myWidget::mouseMoveEvent(QMouseEvent *evt)
{
if(!ui.bar_horizontalFrame->underMouse()) return;
const QPoint delta = evt->globalPos() - oldPos;
move(delta);
}

问题是,无论我第一次在框架对象上按哪里,小部件原点(0,0(都会移动到当前光标位置(所以光标会在左上角(。我怎样才能使小部件的原点不移动到光标位置?

谢谢你的帮助!

您正在执行:

if(ui.bar_horizontalFrame->underMouse())
{
oldPos = evt->globalPos() - evt->pos(); //QPoint
} 

你到达

if(ui.bar_horizontalFrame->underMouse())
{
oldPos = evt->globalPos() - frameGeometry().topLeft();
} 

最新更新