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

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

0 голосов
/ 29 августа 2018

Я использую библиотеку 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 параметры смещение пикселя в направлении х смещение пикселя по оси Y

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

1 Ответ

0 голосов
/ 01 сентября 2018

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

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

...