Qt — передать QMouseEvent дочерним групповым символам

Я провел некоторое исследование о QMouseEvents, но я застрял в передаче QMouseEvent дочерним виджетам. У меня есть программа с такой структурой:

MainWindow > DockWidget > WidgetList > WidgetTarget

MainWindow является родителем DockWidget и т. Д. … Моя основная цель — узнать, когда я щелкнул в MainWindow, и передать этот QMouseEvent в WidgetTarget.

Я прочитал документ о QMouseEvent и вижу полезные функции ignore () QEvent, но это противоречит тому, что я хочу. QMouseEvent передается родителю, поэтому, если я нажму на WidgetTarget, QMousseEvent будет передан WidgetList.

Так есть ли способ передать QMousseEvent дочернему виджету вместо его родительского виджета?
Я видел некоторую хитрость с флагом Qt :: WA_TransparentForMouseEvents, но я не знаю, является ли это правильным способом

РЕДАКТИРОВАТЬ :
Я добавлю некоторые подробности о работе в WidgetTarget с помощью mousePressEvent (событие QMouseEvent *). Это в основном сделать пипетку. Вот код, который я имею в виду:

 void WidgetTarget::mousePressEvent(QMouseEvent *event)
{
if(eyeDropperActivated) //true when clicked on button eyedropper
{
QLabel *label = (QLabel*)MainWindow->childAt(event->x(),event->y());
QColor color; //Get the pixel value at x,y event from the QLabel pixmap
setColor(color) //Set the color parameter of WidgetTarget
}

}

Я читаю ваши полезные комментарии и да, думаю, будет легко, если я реализую этот код в MainWindow, но функция пипетки находится в WidgetTarget, поэтому в основном мне нужно найти способ активировать пипетку в WidgetTarget, проверьте в MainWindow, если пипетка активирован, и отправить после WidgetTarget сигнал с QColor, например?

С уважением

1

Решение

Задача ещё не решена.

Другие решения


По вопросам рекламы [email protected]