我试图通过拦截QWidget来移动QMouseEvent,结果是:
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)都会移动到当前的光标位置(因此光标将位于左上角)。我如何拥有它,使小部件的起源不会移动到光标位置?
谢谢你的帮助!
发布于 2022-07-26 18:35:14
你所做的是:
if(ui.bar_horizontalFrame->underMouse())
{
oldPos = evt->globalPos() - evt->pos(); //QPoint
} 你得
if(ui.bar_horizontalFrame->underMouse())
{
oldPos = evt->globalPos() - frameGeometry().topLeft();
} https://stackoverflow.com/questions/73101555
复制相似问题