2017-12-20 17 views
0

私はアプリケーションをプログラミングしています。 QT C++で、次の質問があります。 qchart図の軸(ダイアグラム自体ではなく)をクリックするとマウスイベントを捕捉することはできますか?Qチャートダイアグラムの軸をクリックするとマウスイベントを捕らえる

私はまたQChartインスタンス上eventfilterで問題を解決しようとした、eventfilterはこれまでに動作します。..

を軸インスタンスのイベントメソッドを上書きしようとしましたが、イベントメソッドが呼び出されていない

。しかし、AxisとQchart領域の間のマウスクリックをどのように区別するのか?

//Mouse filter Object: 
MousePressEater::MousePressEater(Axes* ax) 
{ 
    this->axis = ax; 
} 

bool MousePressEater::eventFilter(QObject *obj, QEvent *event) 
{ 
    //qDebug() << event->type(); 
    if (event->type() == QEvent::UngrabMouse) { 
     QMouseEvent *mEvent = static_cast<QMouseEvent *>(event); 
     qDebug("Ate mouse press %d %d %d %d", mEvent->pos().x() , mEvent->pos().y() , axis , obj); 
     return true; 
    } else { 
     // standard event processing 
     return QObject::eventFilter(obj, event); 
    } 
} 


//Installing the filter in the constructor(inherited from QChart): 
MousePressEater *mPressEater = new MousePressEater(ax); 
this->installEventFilter(mPressEater); 

"obj"は、軸をクリックするとQChartインスタンスへのポインタを返します。

誰でもこの問題の解決策をお探しですか? ありがとう!します。https://doc.qt

+0

のためのマニュアルを確認してください。 io/qt-5/qabstractaxis.html – TCouch

+0

クイックアンサーに感謝します。私はすでに同じ文書を席巻していたが、私を助けなかった:-( – simonegg

答えて

0

は、*はQObject :: installEventFilter(QObjectをfilterObj)とvoid *型のQWidget :: mousePressEventこのクラスは、あなたを助けるかもしれない(QMouseEvent イベント)

関連する問題