1

我正在编写一个应用程序。在 QT c++ 中并有以下问题:单击 qchart 图表的轴(不在图表本身中)时是否可以捕获鼠标事件?

我试图覆盖轴实例的事件方法,但没有调用事件方法..

我还尝试使用 QChart 实例上的事件过滤器来解决问题,事件过滤器到目前为止有效。但是如何区分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 实例的指针。

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

4

1 回答 1

0

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

于 2017-12-21T14:11:05.600 回答