Qt中实现主窗口拖动功能

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sinat_34073684/article/details/64520775

首先,在mainwindow.h文件中包含头函数:

#include <QMouseEvent>

定义两个全局变量与函数:

private:
    QPoint startPos;//鼠标点击时的全局位置
    QPoint startPos1;//鼠标点击时的相对位置 

    void mousePressEvent(QMouseEvent *event);//鼠标点击
    void mouseMoveEvent(QMouseEvent *event);//鼠标追踪

在mainwindow.cpp编写函数:

//记录拖动起始位置
void MainWindow::mousePressEvent(QMouseEvent *event)
{
    startPos = event->globalPos();//获取点击鼠标时的全局坐标
    startPos1 = event->pos();//获取点击鼠标的相对mainwindow的坐标
}

//窗口移动
void MainWindow::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons() & Qt::LeftButton)//判断是否是左键按下
    {
        QPoint movePos = event->globalPos() - startPos;//计算鼠标移动位置
        if( movePos.manhattanLength() > 4)//判断移动像素距离,防抖动
            this->move(event->globalPos() - startPos1);
        return;
    }
}

最后,运行。

展开阅读全文

没有更多推荐了,返回首页