- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我在维护曲线指针方面遇到了问题。在设置样本(或将曲线附加到绘图)期间,我遇到了内存访问冲突。它发生在 updateDisplayingData 方法的第 3 次调用中。调试器在 QwtSeriesStore 中的 void QwtSeriesStore::setData( QwtSeriesData *series ) 中捕获异常。下面是更新的 SSCCE 代码:
头文件:
#ifndef PLOT_H
#define PLOT_H
#include <qwt_plot.h>
#include <qwt_legend.h>
#include <qwt_plot_curve.h>
class Plot : public QwtPlot
{
Q_OBJECT
public:
explicit Plot(QWidget *parent = 0);
~Plot();
void updateDisplayingData(std::vector<double> data);
private:
void setUpPlot();
void setUpCurves();
void initialXAxisValues();
std::vector<double> XAxisValues;
std::auto_ptr<QwtLegend> legend;
QwtPlotCurve *aXCurve;
};
#endif // PLOT_H
源文件:
#include "plot.h"
Plot::Plot(QWidget *parent)
: QwtPlot(parent)
{
setUpPlot();
setUpCurves();
}
void Plot::setUpPlot()
{
QwtLegend *legend = new QwtLegend;
legend->setFrameStyle(QFrame::Box|QFrame::Sunken);
this->insertLegend(legend, QwtPlot::BottomLegend);
}
void Plot::setUpCurves()
{
aXCurve = new QwtPlotCurve("Acceleration in X axis");
aXCurve->setStyle(QwtPlotCurve::Lines);
aXCurve->setRenderHint(QwtPlotItem::RenderAntialiased);
aXCurve->setPen(QPen(QColor(150,200,200),2));
}
void Plot::initialXAxisValues()
{
double time = 0;
for(int i=0; i<=600; i++)
{
XAxisValues.push_back(time);
time += 0.1;
qDebug() << XAxisValues[i];
}
}
void Plot::updateDisplayingData(std::vector<double> data)
{
this->detachItems(QwtPlotItem::Rtti_PlotItem, true);
aXCurve->setSamples(QVector<double>::fromStdVector(XAxisValues),QVector<double>::fromStdVector(data));
aXCurve->attach(this);
replot();
}
Plot::~Plot()
{
}
还值得注意的是,当我每次调用更新(下面的示例)方法时初始化曲线时,它都能正常工作(但它不符合项目要求)。
void Plot::updateDisplayingData(std::vector<double> data)
{
this->detachItems(QwtPlotItem::Rtti_PlotItem, true);
QwtPlotCurve *aXCurve1;
aXCurve1 = new QwtPlotCurve("Acceleration in X axis");
aXCurve1->setStyle(QwtPlotCurve::Lines);
aXCurve1->setRenderHint(QwtPlotItem::RenderAntialiased);
aXCurve1->setPen(QPen(QColor(150,150,200),2));
aXCurve1->setSamples(QVector<double>::fromStdVector(XAxisValues),QVector<double>::fromStdVector(data));
aXCurve1->attach(this);
replot();
}
最佳答案
我发现了一个错误。这是在
this->detachItems(QwtPlotItem::Rtti_PlotItem, true);
第二个参数定义分离后自动删除项目。所以值“真”导致我的曲线被删除。当我将其更改为“false”时,一切都开始正常工作。
关于c++ - QwtPlot - 设置样本期间的内存访问冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22848713/
我在维护曲线指针方面遇到了问题。在设置样本(或将曲线附加到绘图)期间,我遇到了内存访问冲突。它发生在 updateDisplayingData 方法的第 3 次调用中。调试器在 QwtSeriesSt
我的代码中有 geap 损坏检测。销毁后发生错误。该错误与 QwtLegend 和 QwtPlotCurve 指针有关。我尝试使用 auto_ptr 来 100% 确定 memery 被正确释放,但甚
我想用两个水平 Axis 创建绘图。底 Axis 是线性的,顶 Axis 是非线性的。我有一个数据表用于转换“底部值(value) -> 顶部值(value)”。我发现 QwtScaleEngine
我正在使用 QwtPlotRenderer 将绘图保存到文件。我还使用 QImage::grabWidget() 将绘图保存到 QPixmap。 但在这两种情况下,生成的图像都是: 如您所见,曲线在结
我尝试使用 QwtPlot,但是当我将这一行添加到我的 MainWindow.cpp 时 QwtPlot *plot = new QwtPlot(QwtText("Demo"), this); 应用程
我在处理 QwtPlot 刻度时遇到了一些问题。 我的 QwtPlot 的 X 轴是这样的: 我将 AxisMaxMajor 设置为 24: dataPlot->setAxisMaxMajor(Qwt
我将 QwtPlot 子类化为: class RealPlot : public QwtPlot { public: RealPlot () { ... set
我想知道在创建 QwtPlot 之后我可以使用哪些方法来更改它以及如何使用它。到目前为止,我在我的构造函数中使用 QwtPlot->setCanvasBackground(),但是在我的程序中,用户可
我对使用 QwtPlot 类绘制自定义坐标系感到困惑。我的目标是绘制一个具有自定义比例尺的坐标系,并在这些自定义比例尺上绘制网格线。以下是比例的值: x 轴和 y 轴刻度: x1=-0.642455
在 Qwt 的早期版本中,我们添加了 QwtPlot::clear() 但现在,我找不到它了。 有什么想法吗?我有一个实时绘图,所以在重新绘图时,xmin 之前的信息并不是很重要,并且随着时间的推移它
我使用 QwtPlot 6.1.3。 有没有办法显示多条曲线,共享一个 X 轴,但每条曲线都有自己的 Y 轴? 我没有在文档中找到任何内容,我的 Google 搜索也没有返回任何有用的信息(只是一些技
我正在使用 libqwt-6.1.1 在 QwtPlot 元素(作为直方图)中使用 y 轴自动缩放显示变量数据。根据实际数据和 tic 的数量,autoscale-run 认为合理,整个 QwtPlo
在我的 QwtPlot 对象中,我绘制了一些曲线和一个 QwtPlotPicker(派生自 Qwt playground 的 curvetracker 类)。 我怎样才能全部清除? 我需要删除曲线,隐
如何在 QwtPlot 上给 QwtPlotCurve 添加标签? 例子 最佳答案 我的解决方案 class QwtPlotCurveWithTitle : public QwtPlotCurve{
一天中的好时光!我有一个问题,您可能会觉得这很愚蠢而且显而易见,但我已经在尝试解决这个问题时伤透了脑筋。 我想通过按下 QPushButton 来绘制一些曲线。我写了插槽,接在这个按钮对应的信号上。但
我正在尝试使用 qwtplot 绘制速度-时间图形。 我的X数据是QTime值,Y数据是相应的速度值。我找不到任何关于用 QTime 绘图的例子。谁能简单解释一下如何绘制 QTime 与 Y 数据?如
我有一个将点绘制到 QwtPlot 中的系统。我想要的是在任何时间以不同的颜色绘制最后一个标绘点,这样我就可以随时知道哪个是最后一个标绘点。 有什么直接的方法可以做到这一点,或者我该如何处理? 最佳答
我是一名优秀的程序员,十分优秀!