2016-11-27 4 views
0

J'essaie d'exécuter deux gestionnaires QWidget::mousePressEvent() à la fois. J'ai deux widgets, A et B. B est hérité de QLabel, A de QWidget. J'ai surchargé QWidget::mousePressEvent() sur les deux. Widget de B obtient QPoint position du curseur et cela fonctionne. Un widget obtient cette information de la classe B, mais malheureusement, seulement si je clique ailleurs à l'extérieur du widget B (dans la zone bleue). Alors que dois-je faire pour exécuter QWidget::mousePressEvent() du widget A si je clique sur l'espace marron du widget B?QWidget :: mousePressEvent() sur deux widgets à la fois

enter image description here

Répondre

1

Il y a event->ignore(), puisque A est derrière B on peut supposer que A est le parent B (peut-être pas directement mais cela n'a pas d'importance tant qu'il est dans l'arbre), si à la fin de B::mousePressEvent()event->ignore() puis l'événement continuera à se propager vers le bas et déclenchera A mousePressEvent() ainsi ... finalement, si rien d'autre ne consomme l'événement sur le chemin. De plus, étant donné que le mousePressEvent() appelle simplement une fonctionnalité, vous pouvez également le faire manuellement à partir du gestionnaire d'événements de B pour A, tout ce dont vous avez besoin est une référence, ce qui est trivial à implémenter. Vous devrez peut-être mapper les coordonnées au parent si elles sont pertinentes.

+0

événement-> ignore() était exactement ce dont j'avais besoin! Merci beaucoup! (: – Tatarinho