qwt plot - как сделать масштабирование в соответствии с курсором мыши - PullRequest
0 голосов
/ 29 апреля 2018

Я использовал QWT для своего проекта. Я использовал Qwtplotmagnifier для увеличения. Я хочу увеличить масштаб относительно курсора мыши. Вы можете помочь мне?

1 Ответ

0 голосов
/ 18 февраля 2019

На основании этого сообщения на форуме :

bool ParentWidget::eventFilter(QObject *o, QEvent *e)
{
    QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(e);
    if (mouseEvent->type()==QMouseEvent::MouseButtonPress && ((mouseEvent->buttons() & Qt::LeftButton)==Qt::LeftButton)) //do zoom on a mouse click
    {
        QRectF widgetRect(mouseEvent->pos().x() - 50, mouseEvent->pos().y() - 50, 100, 100); //build a rectangle around mouse cursor position

        const QwtScaleMap xMap = plot->canvasMap(zoom->xAxis());
        const QwtScaleMap yMap = plot->canvasMap(zoom->yAxis());
        QRectF scaleRect = QRectF(
            QPointF(xMap.invTransform(widgetRect.x()), yMap.invTransform(widgetRect.y())),
            QPointF(xMap.invTransform(widgetRect.right()), yMap.invTransform(widgetRect.bottom())) ); //translate mouse rectangle to zoom rectangle

        zoom->zoom(scaleRect);
    }
}
...