0
点赞
收藏
分享

微信扫一扫

无边框时鼠标拖动界面

吴wuwu 2022-01-26 阅读 96
qt

1.创建继承自QWidget的派生类QXXX,并重载QWidget类的三个鼠标事件虚函数
void QWidget::mousePressEvent(QMouseEvent *event);
void QWidget::mouseMoveEvent(QMouseEvent *event);
void QWidget::mouseReleaseEvent(QMouseEvent *event);

2.声明变量
bool bMoving = false;
QPoint lstPos;

3.声明函数
void mousePressEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);

4.鼠标事件的实现
// 左键按下事件
void QXXX::mousePressEvent(QMouseEvent *event)
{
    if (Qt::LeftButton == event->button())
    {
        bMoving = true;
        lstPos = event->globalPos() - pos();
    }
    return QWidget::mousePressEvent(event);
}

// 鼠标移动事件
void QXXX::mouseMoveEvent(QMouseEvent *event)
{
    if (bMoving && (event->buttons() && Qt::LeftButton) && 
    ((event->globalPos() - lstPos).manhattanLength() > QApplication::startDragDistance()))
    {
        move(event->globalPos() - lstPos);
        lstPos = event->globalPos() - pos();
    }
    return QWidget::mouseMoveEvent(event);
}

// 鼠标释放事件
void QXXX::mouseReleaseEvent(QMouseEvent *event)
{
    bMoving = false;
}

举报

相关推荐

0 条评论