当前位置:   article > 正文

Qt实现画的图片移动_qtdesigne图形移动

qtdesigne图形移动
  1. 要实现左键点击鼠标时图片跟着鼠标移动,可以通过以下步骤来实现:
  2. 1. 在QGraphicsView的构造函数中设置鼠标跟踪属性,以便能够捕获鼠标事件。
  3. ```cpp
  4. QGraphicsView::QGraphicsView(QWidget *parent) : QGraphicsView(parent)
  5. {
  6. setMouseTracking(true);
  7. }
  8. ```
  9. 2. 在QGraphicsView中重写鼠标按下、鼠标移动和鼠标释放事件的处理函数。
  10. ```cpp
  11. void QGraphicsView::mousePressEvent(QMouseEvent *event)
  12. {
  13. if (event->button() == Qt::LeftButton) {
  14. // 获取点击位置
  15. QPointF pos = mapToScene(event->pos());
  16. // 判断是否点击到图片
  17. if (scene()->itemAt(pos, QTransform()) == imageItem) {
  18. // 记录鼠标起始位置
  19. lastMousePos = pos;
  20. // 设置鼠标移动跟踪
  21. setDragMode(QGraphicsView::ScrollHandDrag);
  22. }
  23. }
  24. QGraphicsView::mousePressEvent(event);
  25. }
  26. void QGraphicsView::mouseMoveEvent(QMouseEvent *event)
  27. {
  28. if (dragMode() == QGraphicsView::ScrollHandDrag) {
  29. // 获取鼠标位置
  30. QPointF pos = mapToScene(event->pos());
  31. // 计算鼠标移动距离
  32. QPointF delta = pos - lastMousePos;
  33. // 更新图片位置
  34. imageItem->setPos(imageItem->pos() + delta);
  35. // 更新鼠标位置
  36. lastMousePos = pos;
  37. }
  38. QGraphicsView::mouseMoveEvent(event);
  39. }
  40. void QGraphicsView::mouseReleaseEvent(QMouseEvent *event)
  41. {
  42. if (event->button() == Qt::LeftButton) {
  43. // 停止鼠标移动跟踪
  44. setDragMode(QGraphicsView::NoDrag);
  45. }
  46. QGraphicsView::mouseReleaseEvent(event);
  47. }
  48. ```
  49. 3. 创建一个QGraphicsScene,并将QPixmap添加到场景中。
  50. ```cpp
  51. QGraphicsScene *scene = new QGraphicsScene(this);
  52. QPixmap pixmap("image.png");
  53. QGraphicsPixmapItem *imageItem = scene->addPixmap(pixmap);
  54. ```
  55. 4. 创建一个QGraphicsView,并将QGraphicsScene设置给它。
  56. ```cpp
  57. QGraphicsView *view = new QGraphicsView(this);
  58. view->setScene(scene);
  59. ```
  60. 通过以上步骤,就可以实现左键点击鼠标时图片跟着鼠标移动的功能。

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

闽ICP备14008679号