我正在研究Qt应用程序,我遇到了将鼠标事件发送到我需要的问题.
这里是我所拥有的高级视图(每个级别还有其他事情需要视图和场景):
+----------------
| App Window -- QMainWindow
| +--------------
| | View -- QGraphicsView --- Grabbing mouse events here for Mode 1
| | +------------
| | | Scene -- QGraphicsScene
| | | +----------
| | | | Image -- QGraphicsPixmap --- Want to grab mouse events here for Mode 2
| | | |
Run Code Online (Sandbox Code Playgroud)
在模式1中,我在View级别抓取事件mousePressEvent.在模式2中,我想在图像级别抓取鼠标事件.在我在View类中重载mousePressEvent之前,我能够获取Image中的所有事件.现在我正在View中捕获我无法在Image中获取鼠标事件. 图像在Scene中是私有的,我不想公开它.
这里没有继承权; 每个项目都是由其上方的对象创建的对象.
阅读这个问题Qt - 将事件传递给多个对象?让我觉得我想在图像级别捕获鼠标事件并让它们重新启动; 但是,我仍然需要在View中创建mousePressEvent,我会回到原来的位置.
有没有办法在运行时打开/关闭事件处理并确保它们到达较低级别?或者有没有办法将事件转发给子对象?
有没有办法在运行时打开/关闭事件处理并确保它们到达较低级别?或者有没有办法将事件转发给子对象?
有一些可能性:
在运行时,可以使用方法QGraphicsItem :: setAcceptedMouseButtons(...)关闭/打开鼠标事件.
还有很多其他的可能性......
希望能帮助到你 !