Probleme mit insertCurve
Probleme mit insertCurve
Hallo,
ich möchte eine Kurve anzeigen lassen. Ich habe im Internet ein paar Beispiele dazu gefunden wie das geht.
Wenn ich das mit insertCurve machen will, kommt entweder diese Fehlermeldung:
error C2039: 'insertCurve': Ist kein Element von 'QwtPlot'
oder diese:
error C3861: 'insertCurve': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
Woran kann das liegen? Wie krieg ich meine Kurve hin?
Danke,
steffie82
ich möchte eine Kurve anzeigen lassen. Ich habe im Internet ein paar Beispiele dazu gefunden wie das geht.
Wenn ich das mit insertCurve machen will, kommt entweder diese Fehlermeldung:
error C2039: 'insertCurve': Ist kein Element von 'QwtPlot'
oder diese:
error C3861: 'insertCurve': Bezeichner wurde auch mit einer argumentbezogenen Suche nicht gefunden
Woran kann das liegen? Wie krieg ich meine Kurve hin?
Danke,
steffie82
Hi steffie82,
mal ein Versuch.
HTH, Bernd
--
simpleplot.h:
main.cpp:
simpleplot.cpp:
mal ein Versuch.
HTH, Bernd
--
simpleplot.h:
Code: Alles auswählen
#ifndef SIMPLEPLOT_H
#define SIMPLEPLOT_H
#include <qwt_plot.h>
class SimplePlot : public QwtPlot
{
public:
SimplePlot(QWidget *parent = 0);
~SimplePlot() {};
};
#endif // SIMPLEPLOT_H
Code: Alles auswählen
#include <QtGui/QApplication>
#include "simpleplot.h"
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
SimplePlot w;
w.show();
return a.exec();
}
Code: Alles auswählen
#include "simpleplot.h"
#include <qwt_plot_curve.h>
#include <qwt_legend.h>
SimplePlot::SimplePlot(QWidget *parent) : QwtPlot(parent)
{
const int points = 500;
double x[points];
double y[points];
for (int i = 0; i < points; i++)
{
x[i] = i * 2 * 3.14 / points;
y[i] = sin(x[i]);
}
setTitle( "Sinus" );
insertLegend(new QwtLegend(), QwtPlot::RightLegend);
setAxisTitle( xBottom, "x" );
setAxisTitle( yLeft, "y" );
QwtPlotCurve *pc = new QwtPlotCurve("y = sin(x)");
pc->setRenderHint(QwtPlotItem::RenderAntialiased);
pc->setPen(QPen(Qt::red));
pc->attach(this);
pc->setData(x, y, points);
replot();
}
-
qt_beginner
- Beiträge: 9
- Registriert: 28. Juni 2007 15:11
Hallo,
noch ein Versuch
nach:
nimm mal noch sowas hinzu:
cu, Bernd
noch ein Versuch
nach:
Code: Alles auswählen
pc->setPen(QPen(Qt::red));Code: Alles auswählen
pc->setBaseline(-1.0);
pc->setBrush(QBrush(Qt::black,Qt::SolidPattern));-
qt_beginner
- Beiträge: 9
- Registriert: 28. Juni 2007 15:11
-
qt_beginner
- Beiträge: 9
- Registriert: 28. Juni 2007 15:11
Hallo Bernd,
ich bin's nochmal
Weißt du zufällig auch, wie man Werte ständig weiterberechnet, also dass der Sinus sich quasi "bewegt", weil vorne immer wieder neue Werte eingegeben werden und dass der Graph nicht mehr stehenbleibt?
Dass quasi ständig aktualisiert wird.
Ich hab mir schon das realtime plot dazu angeschaut, aber irgendwie werde ich daraus nicht schlau. Das muss doch auch einfacher gehen?
Wäre nett, wenn jemand dazu ne Idee hat!
Grüße,
qt_beginner
ich bin's nochmal
Weißt du zufällig auch, wie man Werte ständig weiterberechnet, also dass der Sinus sich quasi "bewegt", weil vorne immer wieder neue Werte eingegeben werden und dass der Graph nicht mehr stehenbleibt?
Dass quasi ständig aktualisiert wird.
Ich hab mir schon das realtime plot dazu angeschaut, aber irgendwie werde ich daraus nicht schlau. Das muss doch auch einfacher gehen?
Wäre nett, wenn jemand dazu ne Idee hat!
Grüße,
qt_beginner
Zum Einstieg sind sicher eher das simple oder das bode Beispiel geeignet. Für eine wandernde Achse schau Dir am Besten mal das cpuplot Beispiel an.
Das realtime Beispiel zeigt eine Optimierung für einen sehr selten gebrauchten Spezialfall - der mit Qt4 ohnehin nur noch auf X11 funktioniert. Warum verbeißt Du Dich da ?
Uwe
PS: Der Code für die Sinus Kurve ist im Übrigen das simple Bespiel aus Qwt4. Warum der als Datei so viel "komplizierter" ist, als wenn er hier im Forum gepostet wird, werde ich nie verstehen.
Das realtime Beispiel zeigt eine Optimierung für einen sehr selten gebrauchten Spezialfall - der mit Qt4 ohnehin nur noch auf X11 funktioniert. Warum verbeißt Du Dich da ?
Uwe
PS: Der Code für die Sinus Kurve ist im Übrigen das simple Bespiel aus Qwt4. Warum der als Datei so viel "komplizierter" ist, als wenn er hier im Forum gepostet wird, werde ich nie verstehen.
@Uwe,
In Qwt5 benutzt Du da eine von QwtData abgeleitetete Klasse SimpleData. Das ist IMHO schon etwas komplizierter als 2 Arrays an SetData zu übergeben. Wäre das einfachere Beispiel aus Qwt4 denn vielleicht nicht auch noch von Interesse ?
cu, Bernd
Interessant, ich habe das im Prinzip von hier (Qwt4 kenne ich nicht): http://www.digitalfanatics.org/projects ... ter11.htmlDer Code für die Sinus Kurve ist im Übrigen das simple Beispiel aus Qwt4.
In Qwt5 benutzt Du da eine von QwtData abgeleitetete Klasse SimpleData. Das ist IMHO schon etwas komplizierter als 2 Arrays an SetData zu übergeben. Wäre das einfachere Beispiel aus Qwt4 denn vielleicht nicht auch noch von Interesse ?
cu, Bernd
-
qt_beginner
- Beiträge: 9
- Registriert: 28. Juni 2007 15:11
Wenn ich cpuplot starte, kommt nach 2 Sekunden bei mir ein Debug ErrorUwe hat geschrieben:Für eine wandernde Achse schau Dir am Besten mal das cpuplot Beispiel an.
Ich hab hier im Forum mal gesucht und jemanden gefunden, der quasi dasselbe Problem wie ich hatte und ihm wurde das realtime-Beispiel nahe gelegt. Daher..Uwe hat geschrieben: Das realtime Beispiel zeigt eine Optimierung für einen sehr selten gebrauchten Spezialfall - der mit Qt4 ohnehin nur noch auf X11 funktioniert. Warum verbeißt Du Dich da ?
Kann man den Graphen auch ohne so einen counter "laufen lassen"?
Eigentlich soll der Graph stehenbleiben und durch einen Cursor, der dadrüber läuft, aktualisiert werden. Versteht ihr was ich meine?
Dachte vielleicht gibt es irgendeine "Aktualisierungsfunktion", an der immer neue Daten übergeben und sofort ausgegeben werden im Plot.
Gibt es da irgendein Beispiel zu?
Zuletzt geändert von qt_beginner am 29. Juni 2007 13:26, insgesamt 1-mal geändert.
-
qt_beginner
- Beiträge: 9
- Registriert: 28. Juni 2007 15:11
Nein, das ist ausreichend in der Dokumentation zur Klasse QwtPlot dargestellt.bst hat geschrieben:Das ist IMHO schon etwas komplizierter als 2 Arrays an SetData zu übergeben. Wäre das einfachere Beispiel aus Qwt4 denn vielleicht nicht auch noch von Interesse ?
Man kann sicher darüber streiten, ob es einfacher ist einen Funktionspointer (hier ::sin()) zu übergeben, oder ob man temporäre Arrays befüllt und anschliessend übergibt. In Qwt 5.1 wird die SimpleData Klasse ohnehin in verallgemeinerter Form in die Bibliothek wandern, so daß man als Anwender nur noch Funktionspointer und Anzahl Punkte übergeben muß.
Der Text aus dem Tutorial ist zu Zeiten von Qwt4/Qt3 geschrieben worden und wendet sich nur an ganz einfach Anwendungen. Ich hatte schon immer mal vor selber ein Dokument zu schreiben um das grundlegende Design darzustellen. Denn das eigentliche Problem sind weniger die kleinen Anwendungen, die z.B möglichst einfach eine Sinus Kurve darstellen wollen, sondern vielmehr wenn individualle Daten individuell repräsentiert werden sollen.
Aber in der Regel schaffe ich sehr viel weniger als ich mir vornehme ...
Uwe