如果你的QGraphicsWidget、QGraphicsItem无法相应鼠标、键盘消息,请参考《QGraphicsWidget收不到鼠标、键盘消息解决》

两种方法

方法1:

先通过下面的代码设置被拖动想的属性:

setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsFocusable | QGraphicsItem::ItemSendsGeometryChanges | QGraphicsItem::ItemUsesExtendedStyleOption);

如果你的视图是继承自QGraphicsView,则在重载鼠标移动事件时,基类QGraphicsView的鼠标移动事件请不要屏蔽,否则不能移动项,如下:

void GraphicsView::mouseMoveEvent(QMouseEvent *event)
{// 这里根据业务写你需要的代码QGraphicsView::mouseMoveEvent(event);  // 这句不能漏掉,否则项不能移动
}

即上面的QGraphicsView::mouseMoveEvent(event); 这句不能漏掉,否则项不能移动。

方法2:

重写鼠标事件

继承QGraphicsItem,重写mousePressEvent、mouseMoveEvent和mouseReleaseEvent三个函数。

void BreakerItem::mousePressEvent( QGraphicsSceneMouseEvent* event )
{m_mousePressed=true;m_mousePressedPoint=this->scenePos()-event->scenePos();
}void BreakerItem::mouseMoveEvent( QGraphicsSceneMouseEvent* event )
{if(m_mousePressed==true){this->setPos(event->scenePos()+m_mousePressedPoint);}
} void BreakerItem::mouseReleaseEvent( QGraphicsSceneMouseEvent* event )
{m_mousePressed=false;
}

方法2没有亲自测试过,从网上找的。

在QGraphicsView中拖动QGraphicsWidget相关推荐

  1. VB实现指示窗口中拖动方框的程序

    引自:http://dev.21tx.com/2008/11/06/14137.html 在指示窗口中拖动方框的程序如下: '用Form_Load.Map1_AfterLayerDraw.Map1_A ...

  2. 【问题解决】关于AltiumDesigner 10(AD10)原理图中拖动和缩放页面出现卡顿问题

    问题: 在AD20中建立的原理图,后面用AD10打开,出现原理图中拖动和缩放页面卡顿问题. 原因: 在AD20中使用了一个文本框注释,可能AD10不兼容 解决: 删除AD20中添加的文本框,重新在AD ...

  3. Qt实现类似Designer中的拖拽效果:从左侧树控件中拖动图标到右侧布局窗口

    大家在Qt开发中都用过这样的拖动操作,从左边拖动一个控件到右侧的窗口.或是在其它很多软件使用中,都有把图标通过拖动布置到主画面的操作. 如何实现呢? 先看看Qt帮助中的一个实例: 这个例子自定义了一个 ...

  4. cad中拖动文字时卡顿_技巧CAD制图的一百多个技巧,都学会你就逆天了!(下)...

    昨天,小编与大家分享了54个CAD的制图技巧,有没有人试验过呢?小编不得不说,这都是大神试验过n遍总结出来的经验.今天把剩下的制图技巧全部分享给大家,相信你的问题都会迎刃而解!55  如何关闭CAD中 ...

  5. vc++ mfc中拖动效果的实现 借助于CImageList

    拖动是界面编程频繁使用的一个效果,在windows系统下可谓大行其道.纵观时下的应用软件几乎各个都支持各种各样拖动的效果,windows7更是把拖动做到了极致.其实说起来拖动的实现也很简单,对于有句柄 ...

  6. android中拖动文字实现功能,Android:图片中叠加文字,支持拖动改变位置

    之所以做了这么一个Demo,是因为最近项目中有一个奇葩的需求:用户拍摄照片后,分享到微信的同时添加备注,想获取用户在微信的弹出框输入的内容,保存在自己的服务器上.而事实上,这个内容程序是无法获取的,因 ...

  7. qt中拖动窗口widget

    提要 继承与QDialog的窗口,窗口原本按住标题栏可以拖动窗口,但是设置了窗口的隐藏标题栏属性后,窗口不再能够拖动.或者继承于QWidget的窗体,不具有窗口拖动功能. 本文实现继承于窗口widge ...

  8. Ajax 实现在WebForm中拖动控件并即时在服务端保存状态数据 (Asp.net 2.0)(示例代码下载)...

    (一) . 运行示例效果 * 运行后用鼠标拖动蓝色的<马>到任意位置, 将浏览器关闭后, 再重新访问本页面, 会发现<马>仍然在您拖到的位置 (二). AjaxPro.NET简 ...

  9. HTML5中拖动功能的添加属性,html5中可拖动dragable属性及其他成员的讲解

    html5中可拖动dragable属性及其他成员的讲解 发布时间:2020-04-22 11:08:02 来源:亿速云 阅读:350 作者:小新 这篇文章主要为大家详细介绍了html5中可拖动drag ...

最新文章

  1. python类中的属性分为类属性和实例属性两种_python中类和实例如何绑定属性与方法示例详解...
  2. JS BOM之location.hash详解
  3. Java--------------Mysql中时间按要求查询
  4. JAVA单态设计模式
  5. SELinux与SEAndroid
  6. JNI中参数的传递与操作
  7. rails采用MongoDB感觉相当不错!
  8. android Context的使用
  9. CSS浮动(二)---Float
  10. 阿里云文件存储的高性能架构演进之路
  11. 斗鱼赴美递交IPO招股书:拟登陆纽交所 融资5亿美金
  12. 高性能mysql_「高性能MySQL」十年阿里架构师推荐,这份高性能MySQL文档送给你
  13. yum下载文件的缓存位置
  14. How to make your 100k to 10k (5)
  15. Linux之判断socket是否断开
  16. iphone屏幕镜像如何全屏_苹果投屏有什么方法?使用“屏幕镜像”功能,任意切换大小屏幕...
  17. AppCompatActivity设置透明主题
  18. Spring Boot配置(一)
  19. uploaded php,uploaded.php
  20. artifact is missing.

热门文章

  1. 有高级计算机证可以入户东莞吗,本科有学位或有高级职称,2019年可以入户东莞吗?...
  2. java进阶案例下载_java进阶案例
  3. mysql为什么使用b 树作为索引_为什么Mysql用B+树作为索引
  4. 高考辽宁理工高考计算机专业分数,辽宁高考985分数线2019-985大学在辽宁省的录取分数线及位次...
  5. nlm算法matlab代码_遗传算法GA的MATLAB代码
  6. python从oracle提取数据库_[python] python 和远程oracle 数据库连接,select提取文件 环境搭建过程...
  7. django 函数装饰器 变为 类装饰器
  8. cortex m0启动代码详解
  9. HDU_5249(百度之星D题)
  10. 《现代操作系统》读书笔记之——进程调度(二)