1

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 *event) で配置します。基本的にスポイトを作ることです。ここで私が考えているコード:

 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 でスポイトをアクティブにする方法を見つける必要があります。アクティブ化され、WidgetTarget に QColor などの信号を送信します。

よろしくお願いします

4

0 に答える 0