qt 当鼠标按下时,窗口跟随鼠标走遇到的问题(待解决)

使用鼠标拖动窗口的遇到的问题,不知道其他人是否遇到过,核心代码如下



QPoint lastPos ;
bool   m_dragging ;



//鼠标按下
void Widget::mousePressEvent(QMouseEvent *event)
{
    if( (event->buttons()& Qt::LeftButton) &&
        (event->x() > ui->widget->x())&&
        (event->x() < ui->widget->x() + ui->widget->width())&&
        (event->y() > ui->widget->y())&&
        (event->y() < ui->widget->y() + ui->widget->height())){
      lastPos = e->globalPos();
      m_dragging = true;
    }
}



//鼠标移动
void Widget::mouseMoveEvent(QMouseEvent *event)
{
    if((event->buttons()& Qt::LeftButton) && m_dragging == true){
        int dx = event->globalX() - lastPos .x();
        int dy = event->globalY() - lastPos .y();
        lastPos = event->globalPos();
        move(x()+dx,y()+dy);
    }
}

//鼠标释放
void Widget::mouseReleaseEvent (QMouseEvent *event)
{
     if(m_dragging ){
        int dx = event->globalX() - lastPos .x();
        int dy = event->globalY() - lastPos .y();
        move(x()+dx, y()+dy);
        m_dragging = false;
    }
}

参考网上的代码,然后使用以上代码进行移动的话会出现一种情况就是鼠标抖动问题,移动过程中能看出鼠标在窗口上一直在移动,这样的体验效果不是很好,如果你使用qq或者微信的话去快速拖动窗口是不会出现这样抖动现象的。虽然我的代码实现窗口拖动功能但始终有点bug,特别是快速拖动有时候会乱移动或者移动位置不对。不过很少出现就是了。想问问大家是怎么解决此问题的呢?欢迎大家留言或者私信交流。

代码参考自以下博客:

http://www.manongjc.com/detail/15-ayrsrhyqsyuouzq.html

https://www.cnblogs.com/StringSir/p/8445750.html

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章