使用鼠标拖动窗口的遇到的问题,不知道其他人是否遇到过,核心代码如下
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