当前位置:   article > 正文

Qt中使用鼠标拖动移动子窗口的方法_qt 可以自由移动的子窗口

qt 可以自由移动的子窗口

注:ButterFly为类名,可以忽略

一.使用scenePosition()函数获取子窗口点击位置相对于父窗口左上角位置的点

  1. void ButterFly::mousePressEvent(QMouseEvent *event)
  2. {
  3. if(event->button()==Qt::LeftButton)
  4. {
  5. m_pt=event->position();//使用类的成员变量记录鼠标按下位置
  6. }
  7. }
  8. void ButterFly::mouseMoveEvent(QMouseEvent *event)
  9. {
  10. if(event->buttons()&Qt::LeftButton)
  11. {
  12. //这样写的目的是move函数只能穿QPoint或两个整数
  13. int x=event->scenePosition().x()-m_pt.x();
  14. int y=event->scenePosition().y()-m_pt.y();
  15. this->move(x,y);
  16. }
  17. }

二.使用整个屏幕为坐标系

  1. void ButterFly::mousePressEvent(QMouseEvent *event)
  2. {
  3. if(event->button()==Qt::LeftButton)
  4. {
  5. m_pt=event->globalPos() - this->geometry().topLeft();
  6. }
  7. }
  8. void ButterFly::mouseMoveEvent(QMouseEvent *event)
  9. {
  10. if(event->buttons()&Qt::LeftButton)
  11. {
  12. this->move(event->globalPos() - m_pt );
  13. }
  14. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/95102
推荐阅读
相关标签
  

闽ICP备14008679号