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"