Nominate our 2022 Qt Champions!

[SOLVED] [Qwt and a DB] How to plot data coming from a DB with Qwt

  • Hello Qt devs!

    I have written this so far, but the code won't compile:

    xAxisTime = new QSqlQuery;
    xAxisTime->prepare("SELECT date(qa."QA_Timestamp") FROM "v_TestResults"");

    // Preperation of general query to fetch test results
    yAxis = new QSqlQuery;
    yAxis->prepare("SELECT \"OUT_Output\" FROM \"v_TestResults\" WHERE \"OUT_IndexResultat\" = :idtest, \"OUT_Minor\" = :row, \"OUT_Minor\" = :col");
    yAxis->bindValue(":idtest", 20);
    yAxis->bindValue(":row", 1);
    yAxis->bindValue(":col", 1);
    plotDsi0 = new QwtPlotCurve(trUtf8("DSI0"));
    plotDsi0->setAxis(QwtPlot::xBottom, QwtPlot::yLeft);
    plotDsi0->setData(xAxisTime->value(1).toDouble(), yAxis->value(1).toDouble(),


    The compiler complains: that

    there is no matching function call to 'QwtPlotCurve::setData(double, double, int)'

    However, there is a candidate that is:

    QwtPlotcurve:: setData(const double*, const double*, int)

    I guess I could use vectors, but I'm not familiar with them, yet. Is there another way to proceed?

    Thanks for your tips!

  • you should pass pointers to your function.
    double x = xAxisTime->value(1).toDouble();
    double y = yAxis->value(1).toDouble();
    plotDsi0->setData(&x, &y, yAxis->size());


    Primitives have ctors, so this will work too:
    plotDsi0->setData(new double(xAxisTime->value(1).toDouble()), new double(yAxis->value(1).toDouble()),

  • Pointers to the QSqlQuery? But that won't return the actual record stored in the query. Plus, it won't return a double. I'm not sure I understand what you mean.

  • Thanks @soroush. It worked perfectly.

Log in to reply