Я пытаюсь запустить сразу два обработчика QWidget::mousePressEvent()
. У меня есть два виджета: A и B. B наследуется от QLabel
, A от QWidget
. Я перегрузил QWidget::mousePressEvent()
на оба из них. Виджет из B получает QPoint
позицию курсора, и он работает. Виджет получает эту информацию из класса B, но, к сожалению, только если я нахожусь где-то еще за виджетами B (в синей области). Итак, что мне делать, чтобы запустить QWidget::mousePressEvent()
из виджета A, если я нажимаю на коричневое пространство из виджета B?QWidget :: mousePressEvent() на двух виджетах сразу
0
A
ответ
1
Существует event->ignore()
, так как А позади В то предположительно А родитель Б (может быть не прямой, но это не имеет значения до тех пор, как это вниз по дереву), так что если в конце B::mousePressEvent()
вы event->ignore()
, то событие продолжит распространение вниз и вызовет A mousePressEvent()
. В конце концов, если ничто иное не поглотит событие по пути.
Кроме того, поскольку предположительно mousePressEvent()
просто вызывает некоторые функции, вы также можете вручную сделать это из обработчика событий B для A, все, что вам нужно, является ссылкой на него, что тривиально реализовать. Возможно, вам придется сопоставить координаты родительскому объекту, если они релевантны.
event-> ignore() был именно тем, что мне нужно! Большое спасибо! (: – Tatarinho