Я провел некоторое исследование о 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, например?
С уважением
Задача ещё не решена.