我想使用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的大小。但显示曲线不起作用。任何提示?
答案 0 :(得分:1)
你的点数组在堆栈上,在离开forwardPlot()之后就会消失。
答案 1 :(得分:0)
您似乎没有为曲线设置笔颜色:
curve-> setPen(QColor(Qt :: green));
您需要设置轴,以便Qwt知道要显示的绘图部分:
ui-> myPlot-> setAxisScale(QwtPlot :: xBottom,1.0,500.0);
ui-> myPlot-> setAxisScale(QwtPlot :: yLeft,1.0,500.0);
我还设置了曲线的标题,看看你的QwtPlot是否正常工作:
ui-> myPlot-> setTitle(“Plot title”);
编辑:我已经重现了这个问题。 setRawSamples要求您传递的数据缓冲区在绘图的生命周期内有效。在您的情况下,只要forwardPlot() ends
改为在堆中分配缓冲区。