Hallo Leute,
Ich habe folgendes vor: In meinem QwtPlot-Objekt brauche ich ein Hintergrundbild, um die Plotpositionen optisch leicht zuordnen zu können. Dafür hab ich also ein PlotSVGItem erstellt und dem Plot zugewiesen. Weiterhin existiert ein QRectF-Objekt, das die Darstellungsgröße speichert.
Nun möchte ich je nach Benutzerwahl das Hintergrundbild ändern können. Dies funktioniert in zwei Fällen optimal und im dritten nicht.
Der einzige Unterschied (neben dem eigentlichen Bild, was aber ausgetauscht werden kann, ohne dass sich das Verhalten ändert) sind die Koordinaten des QRectF-Objekts.
Folgendes funktioniert: Rect.setCoords(0.0, 0.0, 0.8, 0.9);
Das funktioniert aber nicht: Rect.setCoords(-150.0, -150.0, 150.0, 150.0);
In diesem Fall skaliert er das Hintergrundbild irgendwie falsch. Jedenfalls sind die Rechteckkoordinaten richtig gesetzt, aber im Plot ist der Hintergrund voll schwarz, obwohl nur die Ecken des SVGs schwarz sein dürften.
Mit etwas Herumprobieren habe ich heraus gefunden, dass es nur zu diesem Fehlverhalten kommt, wenn beide Eckkoordinaten das Vorzeichen wechseln. Also bspw. (-150, 0, 150, 150) würde richtig skalieren oder (0, -150, 150 , 150) ebenso. Nur liegt dann das Hintergrundbild eben an der falschen Stelle.
Hat jemand eine Erklärung für dieses seltsame Verhalten oder eine Idee für ein Workaround (das Bild zeichnen und dann verschieben habe ich auch probiert, sobald beide Achsen das Vorzeichen wechseln wird falsch skaliert)?
Danke,
Kay
[gelöst]Bug in QRectF???
[gelöst]Bug in QRectF???
Zuletzt geändert von Kay am 30. Juli 2010 13:07, insgesamt 1-mal geändert.
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
-
Christian81
- Beiträge: 7319
- Registriert: 26. August 2004 14:11
- Wohnort: Bremen
- Kontaktdaten:
Also in meinem Minimalbeispiel kann ich das Problem nicht reproduzieren. Ich gehel also erstmal auf Fehlersuche.
Was mir aber aufgefallen ist, ist dass QRectF::setCoords() laut Hilfe die Koordinaten von der linken, oberen Ecke und der rechten, unteren Ecke übergeben haben möchte.
Bei mir funktioniert das aber nur, wenn ich die linke, UNTERE Ecke und die rechte, OBERE Ecke angebe. Entweder ist die Zählweise in y-Richtung bei Qt anders (was aber den Bildern in der Hilfe nach nicht so zu sein scheint) oder da haut wirklich was nicht hin (vielleicht bin ich auch nur zu dusselig zum Lesen...)
Grüße,
Hardy
Was mir aber aufgefallen ist, ist dass QRectF::setCoords() laut Hilfe die Koordinaten von der linken, oberen Ecke und der rechten, unteren Ecke übergeben haben möchte.
Bei mir funktioniert das aber nur, wenn ich die linke, UNTERE Ecke und die rechte, OBERE Ecke angebe. Entweder ist die Zählweise in y-Richtung bei Qt anders (was aber den Bildern in der Hilfe nach nicht so zu sein scheint) oder da haut wirklich was nicht hin (vielleicht bin ich auch nur zu dusselig zum Lesen...)
Grüße,
Hardy