Qt 实现鼠标左键按下拖住窗口移动

重载了主窗口的mouseMoveEvent和mousePressEvent函数

窗口拖动的原理,个人理解:

执行顺序必然是,先有鼠标按压事件产生,然后产生鼠标移动事件。 所以我在有鼠标键按下的时候,保存当前鼠标和窗体之间的相对距离之,移动的时候显示鼠标位置值发生变化,我们根据鼠标位置值来设置窗体的位置值。

//实现窗口移动
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    if(mouse_press)
    {
        QPoint move_pos=event->globalPos();
        this->move(move_pos-move_point);
    }
}
voidMainWindow::mousePressEvent(QMouseEvent *event)
{
  this->setCursor(Qt::ClosedHandCursor);
    if(event->type()==Qt::LeftButton)
    {
        mouse_press=true;
    }
    move_point=event->globalPos()-this->pos();
}



你可能感兴趣的:(Qt 实现鼠标左键按下拖住窗口移动)