我将 a 附加QLineEdit
到QGraphicsScene
. 我注意到,我附加QGraphicsScene
的任何鼠标事件(如鼠标按下、鼠标释放、鼠标移动等)都在增加。QLineEdit
有什么办法可以防止事件通过QLineEdit
并进入现场?
我使用以下方法附加它:
scene->addWidget(lineEdit);
有什么建议么?谢谢!
我将 a 附加QLineEdit
到QGraphicsScene
. 我注意到,我附加QGraphicsScene
的任何鼠标事件(如鼠标按下、鼠标释放、鼠标移动等)都在增加。QLineEdit
有什么办法可以防止事件通过QLineEdit
并进入现场?
我使用以下方法附加它:
scene->addWidget(lineEdit);
有什么建议么?谢谢!
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() 来确定当前正在抓取鼠标的项目。