Probleme mit Zeichnen mit qwt

Alles rund um die Programmierung mit Qt
Antworten
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Probleme mit Zeichnen mit qwt

Beitrag 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
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag 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
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag von Ozzy »

Hi,

also ich habe schon Messdaten, die ich plotten möchte. Geht das debb damit auch?

mfG, Ozzy
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag 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
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag 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
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag 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
Ozzy
Beiträge: 141
Registriert: 24. Oktober 2007 10:18

Beitrag 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
Uwe
Beiträge: 176
Registriert: 9. Oktober 2005 13:37
Wohnort: München

Beitrag 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
Antworten