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

 

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