0

QLineEditのサブクラスにを付けましたQGraphicsScene。は、添付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 に答える