Seite 1 von 1

Problem mit QwtPointArrayData!!

Verfasst: 30. Mai 2011 10:17
von Muckl
Moin zusammen,
ich versuche einen Qwt plot zu erstellen. Verwende VS08 mit QT Addin. Das Widget ist als Plugin im Designer und hat die Bezeichnung " qwtPlot". Ich erhalte keine Fehlermeldung. Jedoch crashed das Programm beim starten.Ich poste mal den code.
qwttest.cpp:

Code: Alles auswählen

#include "qwttest.h"

qwtTest::qwtTest(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);
	curve = new QwtPlotCurve("test");
	QVector<double> vecx;
	vecx.append(0.0);
	vecx.append(1.1);
	vecx.append(2.1);
	QVector<double> vecy;
	vecy.append(0.0);
	vecy.append(1.1);
	vecy.append(2.1);
	QwtPointArrayData pointData(vecx,vecy);
	curve->setData(&pointData);
	curve->attach(ui.qwtPlot);
}

qwtTest::~qwtTest()
{

}
qwttext.h:

Code: Alles auswählen

#ifndef QWTTEST_H
#define QWTTEST_H

#include <QtGui/QMainWindow>
#include "ui_qwttest.h"
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_series_data.h>

class qwtTest : public QMainWindow
{
	Q_OBJECT

public:
	qwtTest(QWidget *parent = 0, Qt::WFlags flags = 0);
	~qwtTest();
	QwtPlotCurve *curve;
private:
	Ui::qwtTestClass ui;
};

#endif // QWTTEST_H


Hat jemand eine Idee? Habe ich bei der Verwendung von Qwt was falsch verstanden?

gruß,
Muckl

Verfasst: 30. Mai 2011 10:55
von Christian81
Abgesehen davon dass man für solche Probleme einen Debugger hat um zu schauen wo genau es crast - was meinst du wie lange pointData lebt und wann auf pointData zugegriffen werden muss? --> C++ Grundlagen

Verfasst: 30. Mai 2011 11:32
von Muckl
Moin,
jo, stimmt wohl. Aber hätte ich es mit dem Debugger zum laufen bekommen, würde ich mich nciht melden.
In meinem Fall bin ich davon ausgegangen, dass die PointDaten so lange leben, bis das Programm geschlossen wird.
cucu
Muckl

Verfasst: 30. Mai 2011 11:34
von Christian81
Muckl hat geschrieben: In meinem Fall bin ich davon ausgegangen, dass die PointDaten so lange leben, bis das Programm geschlossen wird.
Sie snd lokal in einer Funktion definiert... wieso also diese Annahme?

Verfasst: 30. Mai 2011 11:41
von Muckl
ne, sind doch im Konstruktor definiert. Habe sie auch noch einmal in der HEader definiert und im Konstruktor nur die WErte zugewiesen. Half aber auch nciht.

Verfasst: 30. Mai 2011 11:52
von Christian81
Der Construktor ist auch nur eine Funktion... und deine zweiter Versuch - Code bitte.

Des weiteren: http://qwt.sourceforge.net/class_qwt_pl ... 82129878c4

Also weder was lokal noch als member anlegen sondern mit new initialisieren und vergessen.

Verfasst: 30. Mai 2011 11:59
von Muckl
ah, okay, dachte bei setData brauch er als Argument einfach nur einen Adresse. Ob mit "new" ertsellt oder nicht, dachte ich, wäre egal.
Also zweiter Versuch ist:

.cpp:

Code: Alles auswählen

#include "qwttest.h"

qwtTest::qwtTest(QWidget *parent, Qt::WFlags flags)
	: QMainWindow(parent, flags)
{
	ui.setupUi(this);
	curve = new QwtPlotCurve("test");
	vecx = new QVector<double>;
	vecy = new QVector<double>;
	vecx->clear();
	vecy->clear();
	vecx->append(0.0);
	vecx->append(1.1);
	vecx->append(2.1);
	vecy->append(0.0);
	vecy->append(1.1);
	vecy->append(2.1);
	QwtPointArrayData pointData(*vecx,*vecy);
	curve->setData(&pointData);
	curve->attach(ui.qwtPlot);
}

qwtTest::~qwtTest()
{

}
und .h

Code: Alles auswählen


#ifndef QWTTEST_H
#define QWTTEST_H

#include <QtGui/QMainWindow>
#include "ui_qwttest.h"
#include <qwt_plot.h>
#include <qwt_plot_curve.h>
#include <qwt_series_data.h>

class qwtTest : public QMainWindow
{
	Q_OBJECT

public:
	qwtTest(QWidget *parent = 0, Qt::WFlags flags = 0);
	~qwtTest();
	QwtPlotCurve *curve;
	QVector<double> *vecx;
	QVector<double> *vecy;
private:
	Ui::qwtTestClass ui;
};

#endif // QWTTEST_H

Danke für die Hilfe,
cucu

Verfasst: 30. Mai 2011 14:01
von Muckl
ach wat, nun läuft es, wie du sagtest, QwtPointArrayData auf dem Heap erstellen. Jedoch habe ich nciht verstanden, wodran du das sehen kannst. Kannst du das nochmal erklären?

Muckl

Verfasst: 30. Mai 2011 14:47
von ScyllaIllciz
Steht doch da beim angegeben Link (Warning)!