Qt 通过鼠标移动窗口

前言

用 Qt 开发桌面端程序的时候,通常会去掉自带的标题栏,然后自定义一个标题栏,那么就需要实现通过鼠标来移动窗体。实现逻辑其实很简单,只需要捕捉到鼠标的坐标点,在 mouseMove 事件中实现窗体移动。

源码

void ActionWidget::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::LeftButton)
    {
        mousePress = true;
    }
    //窗口移动距离
    movePoint = event->globalPos() - pos();
}

void ActionWidget::mouseReleaseEvent(QMouseEvent *event)
{
    Q_UNUSED(event)
    mousePress = false;
}

void ActionWidget::mouseMoveEvent(QMouseEvent *event)
{
    if(mousePress)
    {
        QPoint movePos = event->globalPos();
        move(movePos - movePoint);
    }
}