0

我将 a 附加QLineEditQGraphicsScene. 我注意到,我附加QGraphicsScene的任何鼠标事件(如鼠标按下、鼠标释放、鼠标移动等)都在增加。QLineEdit有什么办法可以防止事件通过QLineEdit并进入现场?

我使用以下方法附加它:

scene->addWidget(lineEdit);

有什么建议么?谢谢!

4

1 回答 1

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() 来确定当前正在抓取鼠标的项目。

于 2013-05-20T22:46:41.210 回答