单击qchart图的轴时捕获鼠标事件

问题描述 投票:1回答:1

我正在编写一个应用程序。在QT c ++中有以下问题:当点击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实例的指针。

有人解决这个问题吗?谢谢!

c++ qt qchart
1个回答
0
投票

请检查* QObject :: installEventFilter(QObject filterObj)和* void QWidget :: mousePressEvent(QMouseEvent事件)的文档

© www.soinside.com 2019 - 2024. All rights reserved.