2016-11-27 5 views
0

私は一度に2つのQWidget::mousePressEvent()ハンドラを実行しようとしています。私は2つのウィジェットAとBを持っています。 BはQLabelから継承され、AはQWidgetです。私は両方の上にQWidget::mousePressEvent()をオーバーロードしました。 BからのウィジェットはQPointのカーソル位置になり、動作しています。 ウィジェットはこの情報をクラスBから取得していますが、残念ながら、ウィジェットBの外側(青色の領域内)をクリックした場合のみです。 ウィジェットBから茶色のスペースをクリックすると、QWidget::mousePressEvent()をウィジェットAから実行するにはどうすればよいですか?QWidget :: mousePressEvent()は2つのウィジェットを一度に処理します

enter image description here

答えて

1

AがBの後ろにあるので、その後、おそらくAは(多分直接ではないが、それは問題である限り、それはツリーの下であるとされません)Bの親であるので、event->ignore()があるの終わりであればB::mousePressEvent()あなたがevent->ignore()の場合、イベントは伝搬を続け、AのmousePressEvent()もトリガーします。

また、おそらくmousePressEvent()は単に機能を呼び出すため、AのBのイベントハンドラから手動で実行することもできます。実装するのは簡単なことだけです。関連性がある場合は、座標を親にマップする必要があります。

+0

event-> ignore()は私が必要としていたものでした!どうもありがとう! (: – Tatarinho

関連する問題