[gelöst]QwtPlot::setData Daten aus dynamischen Array

Alles rund um die Programmierung mit Qt
Antworten
chr3
Beiträge: 8
Registriert: 27. September 2008 11:17

[gelöst]QwtPlot::setData Daten aus dynamischen Array

Beitrag von chr3 »

Moin,

gibt es eine Möglichkeit eine QwtPlotCurve mit Daten aus einem dynamischen Array zu erzeugen?

Code: Alles auswählen

QwtPlotCurve * plotCurve = new QwtPlotCurve("CurveTitel");
[...]
plotCurve->setData(...);
Aus QwtPlotCurve Class Reference:

void setRawData (const double *x, const double *y, int size)
void setData (const double *xData, const double *yData, int size)
void setData (const QwtArray< double > &xData, const QwtArray< double > &yData)
void setData (const QPolygonF &data)
void setData (const QwtData &data)

Wäre von Anfang an klar, wieviele x-Werte und zugehörige y-Werte dargestellt werden sollen - könnte ich dies mit Array der Art: const double[size] machen. Aber erst zur Laufzeit ist bekannt, wie viele Wertepaare im Plot dargestellt werden sollen, daher kann ich doch keine const-Arrays verwenden - oder geht das doch irgendwie?

Nette Grüße,
Christian
Zuletzt geändert von chr3 am 9. Oktober 2008 17:03, insgesamt 1-mal geändert.
Ginsengelf
Beiträge: 79
Registriert: 2. Mai 2007 10:21

Beitrag von Ginsengelf »

Moin, ich glaube, du hast einen Verständnisfehler beim "const". Du kannst an diese Methoden durchaus double* (also "normale" dynamische Arrays [vielleicht über Vector und Konsorten nachdenken?]) übergeben, nur innerhalb der Methode wird mit einem const double* gearbeitet.

Ginsengelf
chr3
Beiträge: 8
Registriert: 27. September 2008 11:17

Beitrag von chr3 »

Hmm, ja entweder das oder aber ich sollte das Problem besser ganz anders angehen.

Initial startet die Applikation mit einer Geraden zwischen Start- und Endpunkt. Sobald der Benutzer Daten geladen hat, sollte sich die Kurve verändern. Das Array wird also mit der Size=2 erzeugt und wird später mit einem Array unbekannter Größe überschrieben.

Vielen Dank soweit :-)
Ginsengelf
Beiträge: 79
Registriert: 2. Mai 2007 10:21

Beitrag von Ginsengelf »

Moin, dann solltest du wirklich über std::vector (bzw. QVector, je nachdem, was dir besser gefällt) nachdenken. Da kannst du beliebig Elemente einfügen, und der Speicher ist wie beim 08/15-Array kontinuierlich, du kannst also einfach die Adresse des ersten Objekts an die setData()-Methode übergeben.

Ginsengelf
chr3
Beiträge: 8
Registriert: 27. September 2008 11:17

Beitrag von chr3 »

Jo, die beiden Sachen habe ich mir auch schon angesehen. Vielen Dank.
Antworten