QWT движущийся холст

Я использую библиотеку QWT для своего виджета, на холсте есть несколько кривых, например:

void Plot::addCurve1( double x, double y, const char *CurveName,
                      const char *CurveColor,const char *CurveType )
{
...
    *points1 << QPointF(x, y);
    curve1->setSamples( *points1 );
    curve1->attach( this );
...
}

Итак, все мои кривые имеют одинаковую систему координат. Я пытаюсь создать интерфейс навигации, чтобы я мог поместить шаг в TextEdit (например) и двигаться с помощью этого шага, или я мог бы пойти в конец / начало моей определенной кривой. Я нашел метод в классе QwtPlotPanner, который дает мне такую ​​возможность:

double QWT_widget::move_XLeft()
{
    //getting step from TextEdit
    QString xValStr = _XNavDiscrepancies->toPlainText();
    double xVal = xVal.toDouble();
    // moveCanvas(int dx, int dy) - the method of QwtPlotPanner
    plot->panner->moveCanvas(xVal,0);
    x_storage = x_storage - xVal;
    return x_storage;
}

Так что все работает нормально, но смещение в пикселях, и мне нужно привязать его к моей определенной кривой и ее системе координат. Руководство пользователя Qwt сообщает, что:

Отрегулируйте разрешенные оси в соответствии с параметрами dx/dy dx Смещение пикселя в направлении x dy Смещение пикселя в направлении y

И это единственная информация, которую я нашел. Как я могу преобразовать шаг пикселей в шаг моей системы координат? Мне нужно перейти к концу моей кривой, поэтому я должен вернуть последний QPointF(x,y) моей кривой и преобразовать его в шаг в пикселях? Или, может быть, я использую неправильный класс / метод? Большое спасибо:)

1 ответ

Решение

Спасибо @Pavel Gridin: ( https://ru.stackru.com/a/876184/251026)

"Для преобразования из пикселей в координаты и обратно есть два метода: QwtPlot::transform и QwtPlot::invTransform"

Другие вопросы по тегам