[QWT] kleines Problem mit dem Scrollzoomer

Alles rund um die Programmierung mit Qt
Antworten
TheMetalManiac
Beiträge: 19
Registriert: 21. Juni 2007 15:46

[QWT] kleines Problem mit dem Scrollzoomer

Beitrag von TheMetalManiac »

Hallo!

Ich habe eine Frage bzgl. des Srollzoomers (im QWT Beispiel RealTime_Plot zufinden).

Ich möchte gerne die Funktion implementieren, dass man die y-Achse in einem Plot autoskalieren kann...das ist ja nicht weiter schwierig:

Code: Alles auswählen

setAutoReplot(false);
setAxisAutoScale(QwtPlot::yLeft);
replot();
setAutoReplot(true);
Was muss ich nun aber tun, damit ich dem Zoomer die neue y-Achsenskalierung beibringe? Mein Ansatz war über setZoomBase(QwtDoubleRect):

newZoomerRect ist dabei ein Pointer auf ein QwtDoubleRect- Objekt.

Code: Alles auswählen

	yMin = plot->minYValue();
	yMax = plot->maxYValue();
	if (yMin <0)
	{
		yMin = 0-yMin;
		height = yMax + yMin;
	}
	else
	{
		height= yMax - yMin;
	}
	newZoomerRect->setRect(0,yMin,plot->maxXValue(),height);	
	plotZoomer->setZoomBase(*(newZoomerRect));

Leider geht das anscheinend nicht...

Bestimmt geht das sehr viel einfacher, ich finde allerdings keinen gescheiten Weg...

Herzlichen Dank schon mal!!!

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

Beitrag von Uwe »

setZoomBase ist schon der richtige Ansatz.

Allerdings schreibst Du nicht was nicht funktioniert bzw. benutzt Du in Deiner Berechnung maxX(Y)Values, die falsch sein könnten.

Eventuell ist es am Einfachsten einfach setZoomBase ohne Parameter ( nach dem replot!) aufzurufen. Damit wird der zoomer mit der aktuell dargestellten Skalierung initialisiert. Allerdings veränderst Du aber auch die Werte der X-Achse.

HTH,
Uwe
TheMetalManiac
Beiträge: 19
Registriert: 21. Juni 2007 15:46

Genau das ist das Problem ;)

Beitrag von TheMetalManiac »

Danke mal wieder für die schnelle Antwort!!!

Leider ist genau das das eigentliche Problem ( das sich die Werte der X.Achse dann ebenfalls verändern). Ich möchte ja eigentlich "nur" die y-Skalierung im Zoomer ändern. Mit setZoomBase() wird ja ein neues Recheck initialisiert.
Das ist jetzt noch der letzte Feinschliff in meinem Plot. :)
Leider fällt mir nichts weiter ein, wie ich den Y-Bereich ändern könnte, außer dem oben beschriebenen Code, der allerdings auch keinen Erfolg gebracht hat.

Vielleicht hast du ja noch eine Idee?

Herzlichen Dank schon mal,

TheMetalManiac
Antworten