Seite 1 von 1
Probleme mit Zeichnen mit qwt
Verfasst: 26. Oktober 2007 18:53
von Ozzy
Hi,
ich bin ein Neuling in qt, und erst recht mit qwt, welches ich jetzt benutzen möchte, um ein paar mathematische Sachen zu plotten. Bei qwt waren ja ein paar Examples dabei, welche ich probiert habe zu verstehen. Momentan sitze ich an diesem curvdemo1, und verstehe folgendes nicht:
Es gibt die Funktion MainWin::drawContents(QPainter *painter). Doch ich finde nirgends, dass die aufgerufen wird. Bennene ich sie um, passiert das auch nicht mehr...
Kann mir vielicht jemand von Euch sagen, was ich machen muss, um solch eine Zeichenfunktion erst aufzurufen, wenn ich sie wirklich brauche? Also wenn die zu plottenden Werte nicht schon ganz am Anfang zur Verfügung stehen?
Bin wirklich für jede Hilfe dankebar, MfG, Ozzy
Verfasst: 26. Oktober 2007 20:29
von Uwe
Die curvdemo Beispiele sind denkbar ungünstig zum Einstieg, da die Kurven nicht in das Plot Widget gezeichnet werden. Schau Dir besser zunächst mal das simple Beispiel an:
Die Besonderheit im simple Beispiel ist, daß die Daten nicht als Punktmenge vorliegen, sondern beim Zeichnen berechnet werden. Wenn Du keine Messdaten sondern mathematische Funktionen darstellen willst, brauchst Du eigentlich nur sin/cos durch Deine eigenen Berechnungsvorschriften zu ersetzen.
HTH,
Uwe
Verfasst: 26. Oktober 2007 20:52
von Ozzy
Hi,
also ich habe schon Messdaten, die ich plotten möchte. Geht das debb damit auch?
mfG, Ozzy
Verfasst: 26. Oktober 2007 23:23
von Uwe
Natürlich - du benötigst dafür nur einen anderen Typ von Daten. Schau Dir am Besten einfach mal an, wie in den verschiedenen Qwt Beispielen QwtPlotCurve::setData verwendet wird.
Bevor Du dich entscheidest, lies aber in jedem Fall noch die Dokumentation zu QwtData und QwtPlotCurve::setData um die für Deine Situation geeignete Variante zu finden.
Uwe
Verfasst: 27. Oktober 2007 09:28
von Ozzy
Hi,
danke, jetzt zeichnet er bei mir auch das, was ich gerne hätte...
Aber noch eine Frage:
ich habe ein Fenster, wo man die Parameter einstellen soll, nach denen die Punkte berechnet werden. Mit einem Klick auf "Render" sollen dann die Werte berechnet werden, und die Punkte gezeichnet werden.
Nun meine Frage: kann ich innerhalb meines Fenster einen Bereich definieren, indem er zeichnet? Und auch nur für diesen Bereich die Skalen linkd und unten einfügen???
MfG, und vielen Dank schon einmal, Ozzy
Verfasst: 27. Oktober 2007 11:39
von Uwe
Hm, die Frage habe ich nicht genau verstanden - ich antworte daher mal ganz allgemein:
Der Bereich in den gezeichnet wird, ist die Canvas. Der Inhalt, der auf der Canvas dargestellt wird hängt von den Achsen und deren Wertebereichen ab. Die kann man entweder individuell setzen ( QwtPlot::setAxisScale ) oder automatisch berechnen (Default ) lassen. Der Autoscaler verwendet dafür die Wertebereiche der darzustellenden Daten.
Uwe
Verfasst: 27. Oktober 2007 11:58
von Ozzy
Hi,
was ich eigentlich meinte war ein Bereich, in dem geplottet wird.
Wenn ich das ganze Fenster vom QWidget in ein QwtPlot verändert habe, dann hat er auch da seine Skala angezeigt, wo eigene Widgets von mir waren. Eigentlich wollte ich nur wissen, wie ich diesen Plot-Bereich auf eine Fläche in meinem Fenster "einschränken" kann.
Habe jetzt erst einmal den Plot in einem neuen Fenster geöffnet, aber im gleichen wäre eben doch schöner...
MfG, Ozzy
Verfasst: 27. Oktober 2007 16:14
von Uwe
Ah ok, das sind dann aber eher Qt Basics.
Schau Dir mal die Dokumentation von QLayout and und wie man Composite Widgets baut.
Uwe