Я использую QWidget в качестве верхнего окна с некоторыми дочерними виджетами в нем.В целях тестирования я хочу смоделировать события MouseButtonPress, указав только координаты x / y щелчка мыши.
В верхнем окне я запускаю этот код:
QMouseEvent* evt = new QMouseEvent(
QEvent::MouseButtonPress,
QPointF(x_coord,y_coord),
Qt::LeftButton,
Qt::LeftButton,
0);
// topWindow is a pointer to the top window QWidget
QApplication::postEvent(topWindow, evt);
x_coordи y_coord - это координаты, локальные для верхнего окна, я записал их ранее.
У меня установлен фильтр событий через app.installEventFilter(&eventFilter);
, и я могу видеть отправляемое событие, однако событие никогда не передается вдетские виджеты верхнего окна.Я предполагаю, что это потому, что я указываю topWindow в качестве принимающего объекта для события, и объект не может передавать событие «вниз» своим дочерним элементам (но может передавать их только своим родителям, если таковые были).
Для меня важно, чтобы я мог генерировать события мыши, централизованно расположенные в верхнем окне, и я не хочу вести список указателей для каждого дочернего объекта в верхнем окне (конечно, существует множество иерархийwidgets).
Как можно опубликовать событие, чтобы оно отправлялось объекту по адресу x_coord / y_coord, не зная указателя на этот объект?