QT 实现按住鼠标左键点击对话框空白处,拖动对话框

来源:互联网 发布:网页版淘宝旺旺无法 编辑:程序博客网 时间:2024/04/29 17:19

定义头文件

    QPoint move_point; //移动的距离
    bool mouse_press; //按下鼠标左键

protected:
    void mousePressEvent(QMouseEvent *event);
    void mouseReleaseEvent(QMouseEvent *event);
    void mouseMoveEvent(QMouseEvent *event);

 

复写实现函数:

void Dialog::mousePressEvent( QMouseEvent * event )
{
    //只能是鼠标左键移动和改变大小
    if(event->button() == Qt::LeftButton)
    {
        mouse_press = true;
    }

    //窗口移动距离
    move_point = event->globalPos() - this->pos();
    qDebug() << "pos()" << this->pos().x() << " " << this->pos().y() ;
    qDebug() << "globalPos()" << event->globalPos().x() << " " << event->globalPos().y() ;
}

void Dialog::mouseReleaseEvent(QMouseEvent *)
{
    mouse_press = false;
}

void Dialog::mouseMoveEvent(QMouseEvent *event)
{
    //移动窗口
    if(mouse_press)
    {
        QPoint move_pos = event->globalPos();
        move(move_pos - move_point);
    }
}