1

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

ここに画像の説明を入力

4

1 に答える 1

1

A は B の後ろにあるので、おそらく A は B の親です(直接ではないかもしれませんが、ツリーの下event->ignore()にある限り問題ではありません)。Aもトリガーします...最終的には、他に何もイベントを消費しない場合。B::mousePressEvent()event->ignore()mousePressEvent()

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

于 2016-11-27T12:59:07.553 に答える