ich habe ein Problem beim erstellen eines QwtPlots. Wenn ich versuche den Speicher für die zweite Kurve zu allokieren bekomme ich einen memory corruption fehler zur Laufzeit.
Bei der ersten Funktioniert es problemlos.
mainwindow.h
Code: Alles auswählen
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QDebug>
#include <QPolygonF>
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_spline.h>
#include <qwt_curve_fitter.h>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
QwtPlot *myplot;
QwtPlotCurve *mycurve;
QwtPlotCurve *intercurve;
QPolygonF *uiData;
int setupPlot();
};Code: Alles auswählen
int MainWindow::setupPlot()
{
//plot
myplot = new QwtPlot(this);
myplot->move(QPoint(0,0));
//myplot->setTitle("Curve");
myplot->setCanvasBackground(Qt::white);
myplot->setFixedSize(800,415);
uiData = new QPolygonF;
//uiCurve
mycurve = new QwtPlotCurve();
mycurve->setTitle("Data");
mycurve->setPen(QPen(Qt::black));
mycurve->setRenderHint(QwtPlotItem::RenderAntialiased, true);
mycurve->setSamples(*uiData);
mycurve->attach(myplot);
//interpolarised curve
intercurve = new QwtPlotCurve(); <------------------Hier ist der Fehler
intercurve->setTitle("interpolarised");
intercurve->setPen(QPen(Qt::red));
intercurve->setCurveAttribute(QwtPlotCurve::Fitted, true);
QwtSplineCurveFitter *fitter = new QwtSplineCurveFitter();
fitter->setFitMode(QwtSplineCurveFitter::ParametricSpline);
fitter->setSplineSize(200);
intercurve->setCurveFitter(fitter);
intercurve->setSamples(*uiData);
intercurve->attach(myplot);
// axis
QFont font;
font.setPixelSize(10);
QwtText axisTitleX;
QwtText axisTitleY;
axisTitleX.setText("temperature in °C");
axisTitleX.setFont(font);
axisTitleY.setText("dose in nA");
axisTitleY.setFont(font);
myplot->setAxisTitle(QwtPlot::xBottom, axisTitleX);
myplot->setAxisTitle(QwtPlot::yLeft,axisTitleY);
//show Plot
myplot->show();
myplot->setAutoReplot(true);
return 0;
}