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
0
A
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.
événement-> ignore() était exactement ce dont j'avais besoin! Merci beaucoup! (: – Tatarinho