Problem mit QwtPointArrayData!!

Du bist neu in der Welt von C++? Dann schau hier herein!
Antworten
Muckl
Beiträge: 23
Registriert: 12. April 2011 15:21

Problem mit QwtPointArrayData!!

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Muckl
Beiträge: 23
Registriert: 12. April 2011 15:21

Beitrag 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
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Muckl
Beiträge: 23
Registriert: 12. April 2011 15:21

Beitrag 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.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag 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.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Muckl
Beiträge: 23
Registriert: 12. April 2011 15:21

Beitrag 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
Muckl
Beiträge: 23
Registriert: 12. April 2011 15:21

Beitrag 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
ScyllaIllciz
Beiträge: 200
Registriert: 9. Juli 2010 19:31

Beitrag von ScyllaIllciz »

Steht doch da beim angegeben Link (Warning)!
Antworten