如何在重新绘制之前清除 QwtPlot 曲线?

Posted

技术标签:

【中文标题】如何在重新绘制之前清除 QwtPlot 曲线?【英文标题】:How to clear QwtPlot curves before replotting? 【发布时间】:2013-03-13 12:36:43 【问题描述】:

Qwt 的早期版本中,我们添加了QwtPlot::clear(),但现在我找不到了。

有什么想法吗?我有一个实时绘图,因此在重新绘图时,xmin 之前的信息并不重要,并且随着时间的推移它会崩溃,因为重新绘图正在重新绘制 xmin 之前的所有信息。

【问题讨论】:

【参考方案1】:

Qwtplot::clear() 方法已被弃用。请改用QwtPlotDict::detachItems

void QwtPlotDict::detachItems(int rtti = QwtPlotItem::Rtti_PlotItem, 
                              bool autoDelete = true 
                             )

参数:

rtti:在 QwtPlotItem::Rtti_PlotItem 的情况下,分离所有项目,否则只有 rtti 类型的项目。 autoDelete:如果为 true,则删除所有分离的项目

【讨论】:

好吧,我用这个` for (int i = 0; i detachItems(QwtPlotItem::Rtti_PlotItem, true); plot[i]->detachItems(QwtPlotItem::Rtti_PlotItem, true); and it didn's detach the QwtCurves` 调用不带参数的函数会发生什么?像 plot_all[i]->detachItems();【参考方案2】:

清除绘图的一种方法是将数据点设置为空: 例如: (m_vctTime,m_vctValue -向量) (曲线=新 QwtPlotCurve()) (plot=new QwtPlot(parent))

m_vctTime.clear();
m_vctValue.clear();
curve->setSamples(m_vctTime,m_vctValue);
plot->replot();    

清除你的阴谋

【讨论】:

以上是关于如何在重新绘制之前清除 QwtPlot 曲线?的主要内容,如果未能解决你的问题,请参考以下文章

在 QwtPlot scaleDraw 中绘制向内刻度

qwtplot:重新绘制时没有情节更新

Qwt 仅重新绘制特定区域

QT 与MFC绘图技术比较

QwtPlot:按下鼠标按钮平移并同时在曲线上显示值

在 QwtPlot 中使用 QTime 作为 X 轴