Qt重新实现QMouseEvent实现自定义窗口可拖动

本文详细介绍如何在Qt中通过重写鼠标事件实现窗口的拖动功能。具体步骤包括在pro文件中添加gui模块,h文件中引入QMouseEvent并声明鼠标事件函数,在cpp文件中定义这些函数以响应鼠标按下、移动和释放事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

(1)pro文件中加入

QT +=  gui

(2)h文件的类中加入头文件:

#include <QMouseEvent>

类中加入函数和变量声明:

protected:
    void mouseMoveEvent(QMouseEvent* event);
    void mousePressEvent(QMouseEvent* event);
    void mouseReleaseEvent(QMouseEvent* event);
private:
    QPoint mLastMousePosition;
    bool mMoving;

(3)cpp文件中加入鼠标事件相关函数的定义

void MainWindow::mousePressEvent(QMouseEvent* event)
{
    if(event->button() == Qt::LeftButton)
    {
        mMoving = true;
        mLastMousePosition = event->globalPos();
    }
}
 
void MainWindow::mouseMoveEvent(QMouseEvent* event)
{
    if( event->buttons().testFlag(Qt::LeftButton) && mMoving)
    {
        this->move(this->pos() + (event->globalPos() - mLastMousePosition));
        mLastMousePosition = event->globalPos();
    }
}
 
void MainWindow::mouseReleaseEvent(QMouseEvent* event)
{
    if(event->button() == Qt::LeftButton)
    {
        mMoving = false;
    }
}

转载自https://blog.youkuaiyun.com/qq_28093585/article/details/78483019

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值