2017-12-20 13 views
0

저는 앱을 프로그래밍 중입니다. QT C++에서 다음과 같은 질문이 있습니다. qchart 다이어그램의 축 (다이어그램 자체가 아닌)에서 마우스 이벤트를 클릭 할 수 있습니까?Qchart 다이어그램의 축을 클릭하면 마우스 이벤트를 잡습니다.

나는 또한 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)와 * 무효는 QWidget :: mousePressEvent이 클래스는 당신을 도울 수있다 (QMouseEvent 이벤트)