qt 无标题窗口拖动

以前没用过这样拖动界面窗口,工作中需要做一个qt项目,然后就从网络上查找方法来实现。

本文主要参考自http://blog.csdn.net/hiwubihe/article/details/51712754

主要的实现流程是:

界面类继承QWidget 并重写其中的三个方法:

void mousePressEvent(QMouseEvent *event)//鼠标点击事件

void mouseMoveEvent(QMouseEvent *event)//鼠标移动事件

void mouseReleaseEvent(QMouseEvent *event)//鼠标放开事件

且,在类中定义两个属性:

bool isPress //true 鼠标按下 false 放开

QPoint point //记录鼠标和窗口的位置

 

实现代码:

void MainWidget::mousePressEvent(QMouseEvent *event)
{
    if(event->button()==Qt::LeftButton){
        qDebug() << "press left button";
        this->isPress=true;
        this->point=event->globalPos()-this->pos();
    }
}
void MainWidget::mouseMoveEvent(QMouseEvent *event)
{
    if(event->buttons() & Qt::LeftButton){
        if(this->isPress==true){
            move(event->globalPos()-point);
            point=event->globalPos()-this->pos();
        }
    }
}
void MainWidget::mouseReleaseEvent(QMouseEvent *event)
{
    this->isPress=false;
}

 (qt 包下载:http://download.qt-project.org/archive/qt/

        http://download.qt-project.org/official_releases/qtcreator/)

posted on 2016-11-15 15:14  Just_Boy  阅读(231)  评论(0)    收藏  举报