强制QWidget结束事件传播

时间:2013-05-20 22:41:23

标签: qt qgraphicsscene qevent

我将QLineEdit附加到QGraphicsScene的子类。我注意到QGraphicsScene对我附加的QLineEdit添加了任何鼠标事件(例如鼠标按下,鼠标释放,鼠标移动等)。有没有办法阻止事件通过QLineEdit并进入场景?

我用:

附上它
scene->addWidget(lineEdit);

有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:1)

http://qt-project.org/doc/qt-4.8/qmouseevent.html#details

http://qt-project.org/doc/qt-4.8/qt.html#WidgetAttribute-enum

Qt的:: WA_NoMousePropagation

  

禁止将鼠标事件传播到窗口小部件的父级。默认情况下禁用此属性。

以下是QGraphicsScene的更多信息:

http://qt-project.org/doc/qt-4.8/qgraphicsscene.html#event-handling-and-propagation

  

对于鼠标悬停效果,QGraphicsScene会调度悬停事件。如果项目接受悬停事件(请参阅QGraphicsItem :: acceptHoverEvents()),则当鼠标进入其区域时,它将收到GraphicsSceneHoverEnter事件。当鼠标继续在项目区域内移动时,QGraphicsScene将向其发送GraphicsSceneHoverMove事件。当鼠标离开项目区域时,该项目将收到GraphicsSceneHoverLeave事件。

     

所有鼠标事件都会传递到当前的鼠标抓取器项目。如果项目接受鼠标事件(请参阅QGraphicsItem :: acceptedMouseButtons())并且它接收鼠标按下,则该项目将成为场景的鼠标抓取器。它保持鼠标抓取器,直到它没有按下其他鼠标按钮时收到鼠标释放。您可以调用mouseGrabberItem()来确定当前抓取鼠标的项目。