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