Search code examples
qtqwt

QWT moving canvas


I'm using QWT library for my widget, there are some curves on the canvas, like this:

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 );
...
}

So, all my curves have the same coordinate system. I'm trying to build navigation interface, so I could put step into TextEdit (for example) and moving by using this step, or I could go the end/start of my defined curve. I've found method in QwtPlotPanner class, that gives me such opportunity:

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;
}

So it works ok, but displacement in pixels and I need to stick it to my defined curve and it's coordinate system. Qwt User's Guide tells, that:

Adjust the enabled axes according to dx/dy Parameters dx Pixel offset in x direction dy Pixel offset in y direction

And this is the only information I've found. How can I convert pixels step into my coordinat system step? I need to go to the end of my curve, so I should return the last QPointF(x,y) of my curve and convert it to pixel-step? Or maybe I'm using wrong class/method? Thank you very much :)


Solution

  • Thanks to @Pavel Gridin: (https://ru.stackoverflow.com/a/876184/251026)

    "For conversion from pixels to coordinates and back there are two methods: QwtPlot::transform and QwtPlot::invTransform"