我将QLineEdit
附加到QGraphicsScene
的子类。我注意到QGraphicsScene
对我附加的QLineEdit
添加了任何鼠标事件(例如鼠标按下,鼠标释放,鼠标移动等)。有没有办法阻止事件通过QLineEdit
并进入场景?
我用:
附上它scene->addWidget(lineEdit);
有什么建议吗?谢谢!
答案 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()来确定当前抓取鼠标的项目。