使用鼠標拖動窗口的遇到的問題,不知道其他人是否遇到過,核心代碼如下
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