我正在编写应用程序。在QT c ++中有以下问题: 单击qchart图中的轴(不在图表本身中)时是否可以捕获鼠标事件?
我试图覆盖axis实例的事件方法,但不调用event方法。
我还尝试用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实例的指针。
任何人都有解决这个问题的方法吗? 谢谢!
答案 0 :(得分:0)
请检查* QObject :: installEventFilter(QObject filterObj)和* void QWidget :: mousePressEvent(QMouseEvent event)
的文档