Я использую библиотеку 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) моей кривой и преобразовать его в шаг в пикселях? Или, может быть, я использую неправильный класс / метод?
Большое спасибо:)