Qt6-鼠标移动窗口

举报
DreamLife 发表于 2022/04/15 22:11:19 2022/04/15
【摘要】 新版的Qt6 鼠标事件中函数是有更新了,不过帮助文档还没有更新过来。希望官方也要快速同步呦。 在Qt5中代码   * * 鼠标按下操作 * 记录当前坐标 */static QPoint last(0,0); //保存坐标const int TITLE_HEIGHT = 50; //这里也可以使用宏定义...

新版的Qt6 鼠标事件中函数是有更新了,不过帮助文档还没有更新过来。希望官方也要快速同步呦。

在Qt5中代码

 


  
  1. *
  2. * 鼠标按下操作
  3. * 记录当前坐标
  4. */
  5. static QPoint last(0,0); //保存坐标
  6. const int TITLE_HEIGHT = 50; //这里也可以使用宏定义,保存标题高度,也就是鼠标点击区域的高度
  7. void MainWindow::mousePressEvent(QMouseEvent *event)
  8. {
  9. if(event->y()<TITLE_HEIGHT)
  10. {
  11. last = event->globalPos();
  12. }
  13. }
  14. /*
  15. * 鼠标移动函数
  16. * 这里实时修改窗口的坐标
  17. */
  18. void MainWindow::mouseMoveEvent(QMouseEvent *event)
  19. {
  20. if(event->y()<TITLE_HEIGHT)
  21. {
  22. int dx = event->globalX() - last.x();
  23. int dy = event->globalY() - last.y();
  24. last = event->globalPos();
  25. this->move(this->x()+dx,this->y()+dy);
  26. }
  27. }
  28. /*
  29. * 鼠标释放函数
  30. */
  31. void MainWindow::mouseReleaseEvent(QMouseEvent *event)
  32. {
  33. if(event->y()<TITLE_HEIGHT)
  34. {
  35. int dx = event->globalX() - last.x();
  36. int dy = event->globalY() - last.y();
  37. this->move(this->x()+dx,this->y()+dy);
  38. }
  39. }

在Qt6中有部分变化,如下,当时,沿用Qt5中的代码除了警告是没有其他问题的。

 


  
  1. static QPoint last(0,0); //保存坐标
  2. const int TITLE_HEIGHT = 50; //这里也可以使用宏定义,保存标题高度,也就是鼠标点击区域的高度
  3. void MainWindow::mousePressEvent(QMouseEvent *event)
  4. {
  5. if(event->position().y()<TITLE_HEIGHT)
  6. {
  7. last = event->globalPosition().toPoint();
  8. }
  9. }
  10. void MainWindow::mouseMoveEvent(QMouseEvent *event)
  11. {
  12. if(event->position().y()<TITLE_HEIGHT)
  13. {
  14. int dx = event->globalPosition().x() - last.x();
  15. int dy = event->globalPosition().y() - last.y();
  16. last = event->globalPosition().toPoint();
  17. this->move(this->x()+dx,this->y()+dy);
  18. }
  19. }
  20. void MainWindow::mouseReleaseEvent(QMouseEvent *event)
  21. {
  22. if(event->position().y()<TITLE_HEIGHT)
  23. {
  24. int dx = event->globalPosition().x() - last.x();
  25. int dy = event->globalPosition().y() - last.y();
  26. this->move(this->x()+dx,this->y()+dy);
  27. }
  28. }

 

文章来源: dreamlife.blog.csdn.net,作者:DreamLife.,版权归原作者所有,如需转载,请联系作者。

原文链接:dreamlife.blog.csdn.net/article/details/113741759

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。