Qt & QWT:QwtPlotCurve - 曲线未显示
Posted
技术标签:
【中文标题】Qt & QWT:QwtPlotCurve - 曲线未显示【英文标题】:Qt & QWT: QwtPlotCurve - Curve not showing up 【发布时间】:2013-12-09 13:43:54 【问题描述】:我想使用 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 的大小。但是显示曲线不起作用。有什么提示吗?
【问题讨论】:
ui->myPlot
以前是否可见?如果添加 ui->myPlot->show()
会发生什么
不,我已经试过了。没有帮助:-(
【参考方案1】:
您的点数组在堆栈上,离开 forwardPlot() 后将消失。
【讨论】:
【参考方案2】:您似乎没有为曲线设置笔颜色:
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("绘图标题");
编辑:我已经重现了这个问题。 setRawSamples 要求您传递的数据缓冲区在绘图的生命周期内有效。在您的情况下,您将通过 forwardPlot() ends
改为在堆中分配缓冲区。
【讨论】:
从上面的提示中,只有第 3 部分(绘制标题)有效......仍然不明白问题所在。 “作品”是指您可以在情节小部件上看到标题,但看不到情节本身?看到轴了吗?请考虑发布可重现问题的可编译示例或将项目上传到某处,因为问题可能在其他地方(如 UI 文件)。 好的,我会尽快提供一个例子。我之前在评论中的意思是,我可以看到标题。我还可以看到绘图区域、轴,我可以更改绘图轴的颜色。但我不能改变两个轴的比例(你的答案是两个)。而且,最重要的是,曲线没有出现...感谢您的评论! 看上面的编辑,看来这是问题的根源。以上是关于Qt & QWT:QwtPlotCurve - 曲线未显示的主要内容,如果未能解决你的问题,请参考以下文章