Qwt 简单绘图示例

Posted

技术标签:

【中文标题】Qwt 简单绘图示例【英文标题】:Qwt simpleplot example 【发布时间】:2016-09-23 11:25:23 【问题描述】:

我正在使用 qwt 6.1.3 进行一些 Qt 绘图工作,只是为了测试我创建了一个新项目,添加了库,并将 simpleplot.cpp 示例代码粘贴到 Qtcreator 中。

文件的副本可以在这里查看:https://github.com/eiimage/qwt/blob/master/examples/simpleplot/simpleplot.cpp

代码返回了很多错误。

curve->setSymbol(symbol);

上面的代码必须在符号前加上 * 以防止出错。虽然我不确定这是否正确。

curve->setSamples(points);

产生错误:“类 QwtPlotCurve”没有名为“setSamples”的成员。但是,它在示例中使用,并且还显示在该类的文档中。什么可能导致此问题?

谢谢。

【问题讨论】:

你能把所有的错误都贴出来吗?我检查了qwt_plot_curve.h 的来源,看起来这个例子是正确的。 【参考方案1】:

这个问题是文档之一。提供的所有在线文档和示例均使用setSamplessetRawSamples 方法设置曲线点。这是不正确的。合适的方法是setDatasetRawData

【讨论】:

怎么样?我刚刚尝试使用 qwt 6.1.3,simpleplot 示例工作得很好。 一定是版本问题。我正在使用 red hat linux,setSamplessetRawSamples 字面上不存在。我认为绘图曲线的其他所有内容都相同,但示例方法根本不是一回事。 有趣。查看源代码,这些 API 似乎受到编译器编译指示的保护:#ifndef QWT_NO_COMPAT。我的猜测是您使用的软件包是使用此定义编译的,因此不包括这些 API。我不知道为什么。 我也是这么想的。但是,它并没有解释setDatasetRawData 的来源。这两种方法在功能上与其示例版本相同。对于我打开的每个示例程序,setSamples 的所有实例都必须替换为setData,否则会出错。有两组功能做同样的事情似乎很奇怪。此外,simpleplot.cpp 示例肯定使用了 QVector<QPointF> 变体,它出现在 html 文档中的 #endif 之后。 setData 来自超类QwtSeriesStore。可以看继承图here。 setRawData我不知道。它在上游版本中不存在。我认为添加(或保留)这些功能是为了与一些旧版本保持兼容性。

以上是关于Qwt 简单绘图示例的主要内容,如果未能解决你的问题,请参考以下文章

在 Qwt 中显示绘图值的工具提示

使用 QWT 和 FFTW 绘制频谱图

qwt 保存绘图配置?

qwt 示例 程序意外结束

qt示波器示例采样线程类在项目中是如何工作的?

在 linux ubuntu 上的 Qt 5 中运行 qwt 示例