QGraphicsEllipseItem如何捕捉事件
QGraphicsEllipseItem how to catch events
我正在使用MAC OS X/Qt 5.3小部件应用程序,我遇到了一个问题。我有QGraphicsView
包含场景与可移动的QGraphicsEllipseItem
,但我不知道如何捕捉移动事件的结束。
我想做的是每次点的拖动事件结束时触发一个方法(如果这是不可能的,那么当它移动时),但我不知道从哪里开始或做什么。我宁愿不做我自己的QGraphicsEllipseItem
实现,但如果这是唯一的选择,我可能需要一个手与它。
问题是我也不知道在哪里听这些事件,我有一个类,插入点到小部件,通常作为一个代码背后为它,我想做捕捉那里,因为方法可以从那里访问,并从它获得特定的数据。我完全不知道该做什么或怎么做。
我不想要完整的代码,但如果可以的话,我希望能提供一个示例(指定位置)。
正如@SebastianLange所评论的,您需要处理鼠标事件。基于相同的方法,有两种方法可以做到这一点。
A QGraphicsItem
支持以下功能:
virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent * event )
virtual void mousePressEvent ( QGraphicsSceneMouseEvent * event )
virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event )
第一个方法将继承QGraphicsEllipseItem
并覆盖mouseEvent
s,这将允许您知道项目何时被移动,并且调用mouseReleaseEvent
信号表明移动已经结束。
如果你不想继承QGraphicsEllipseItem
,另一种方法是安装一个场景事件过滤器
这包括创建一个从QGraphicsItem
派生的单独对象,重载鼠标事件(如上所述),然后将该对象安装为QGraphicsEllipseItem
对象的事件过滤器。
就我个人而言,我建议使用第一种方法并继承QGraphicsEllipseItem
。
相关文章:
- Android NDK传感器向事件队列报告奇怪的间隔
- 函数何时会在c++中包含stack_Unwind_Resume调用
- 从文本文件中读取时钟时间和事件时间并进行处理
- WMI检测进程创建事件-c++
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- Python中的for循环与C++有何不同
- 处理闪烁窗口事件
- C++Builder中的OnClick事件签名存在问题
- 跟踪滚动条上的鼠标事件
- 什么是事件表 (wxWidgets)?
- 如何在 MFCaptureEngine 中获取"Camera removed"事件
- 给定顺序中的事件处理
- 当服务中的事件被触发时,如何将响应从服务发送回客户端?
- 在 C++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 在QT中捕捉"Tap and hold" QPushButton上的触摸事件时出现问题
- QGraphicsEllipseItem如何捕捉事件
- 捕捉屏幕保护程序事件
- 如何用c++捕捉MAC操作系统中的鼠标事件
- 如何捕捉QSystemTrayIcon退出事件
- 捕捉全局鼠标滚动,并向应用程序发送自定义鼠标滚动事件