1

我已经对 QMouseEvents 进行了一些研究,但我坚持将 QMouseEvent 传递给子小部件。我有一个结构如下的程序:

MainWindow > DockWidget > WidgetList > WidgetTarget

MainWindow 是 DockWidget 等的父级... 我的主要目标是知道何时单击 MainWindow 并将此 QMouseEvent 传递给 WidgetTarget。

我阅读了有关 QMouseEvent 的文档,并看到了 QEvent 的有用函数 ignore() ,但它与我想要的相反。QMouseEvent 被传递给父级,所以如果我在 WidgetTarget 中单击,QMouseEvent 将被传递给 WidgetList。

那么有没有办法将 QMousseEvent 传递给子小部件而不是其父小部件?我看到了一些带有 Qt::WA_TransparentForMouseEvents 标志的技巧,但我不知道这是否是正确的方法

编辑: 我将使用 mousePressEvent(QMouseEvent *event) 在 WidgetTarget 中详细介绍工作。它基本上是为了做一个吸管。这是我想到的代码:

 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 的信号,例如?

此致

4

0 回答 0