Qt& QWT:QwtPlotCurve - 曲线没有显示出来

时间:2013-12-09 13:43:54

标签: qt plot qwt

我想使用QWT和Qt Creator显示一个简单的图形:

Qt版本:4.8.2,Qt Creator:2.5.2,QWT版本:6.0.0

我在我的MainWindow中添加了一个QwtPlot(在示例中称为“myPlot”)。然后我有一个回调函数,每次按下按钮都会调用它:

void MainWindow::forwardPlot()
{
    double x[9] = {1,20,30,40,50,60,70,200,500};
    double y[9] = {1,500,3,1,200,100,2,1,0};
    QwtPlotCurve *curve = new QwtPlotCurve();
    curve->setRawSamples(x,y,9);
    curve->attach( ui->myPlot );
    curve->show();
    ui->myPlot->replot();
    ui->label->setText("bla");
}

编译工作正常...... 标签设置为“bla”,所以我知道调用了回调函数。但曲线未显示。我可以调整myPlot的大小。但显示曲线不起作用。任何提示?

2 个答案:

答案 0 :(得分:1)

你的点数组在堆栈上,在离开forwardPlot()之后就会消失。

答案 1 :(得分:0)

  1. 您似乎没有为曲线设置笔颜色:

    curve-> setPen(QColor(Qt :: green));

  2. 您需要设置轴,以便Qwt知道要显示的绘图部分:

    ui-> myPlot-> setAxisScale(QwtPlot :: xBottom,1.0,500.0);

    ui-> myPlot-> setAxisScale(QwtPlot :: yLeft,1.0,500.0);

  3. 我还设置了曲线的标题,看看你的QwtPlot是否正常工作:

    ui-> myPlot-> setTitle(“Plot title”);

  4. 编辑:我已经重现了这个问题。 setRawSamples要求您传递的数据缓冲区在绘图的生命周期内有效。在您的情况下,只要forwardPlot() ends

    ,就会传递无效的本地缓冲区

    改为在堆中分配缓冲区。