2016-08-08 46 views
3

Ich verwende QtQuickControls 2 zusammen mit der von QQuickItem abgeleiteten Klasse in meiner App. Nachdem ich das AA_EnableHighDpiScaling-Attribut festgelegt habe und alle QQuickControls 2-Komponenten korrekt auf meinem Smartphone angezeigt werden, wird das Objekt meiner benutzerdefinierten Klasse falsch skaliert. Hier ist die App ohne HighDpi mit minimalem Zoom-Skalierung (so, wie es gemeint ist, arbeiten):Hoch-DPI-Skalierung der von QQuickItem abgeleiteten Klasse

Correct display of QQuickItem

Und hier ist der mit mit minimalen Zoom-Skalierung:

Incorrect display of QQuickItem

Es scheint, dass auf dem zweiten Bildschirm das Objekt zu viel skaliert wird und ich quadratische Pixel aller Texturen sehen kann, die ich mit QPixmap oder QImage zeichne. Die Bilder, die ich aus dem externen Speicher und Knoten wie QSGGeometryNode geladen habe, sehen jedoch korrekt aus. Kann ich die Skalierung nur für ein bestimmtes QQuickItem ausschalten? Wenn nein, was sollte ich einstellen, um es richtig zu rendern?

Wenn ich versuche, Opacity auf QQuickItem mit einer Menge von QSGOpacityNodes in Szene-Diagramm-Knoten-Struktur zu setzen, bekomme ich Segmentierung Fehler. Was kann das verursachen?

Antwort

1

Also löste ich dieses Problem, indem ich die Größe von QSGTexture durch QQuickWindow :: effectiveDevicePixelRatio() dividierte und auch die Größe des Bildes multiplizierte, aus dem Textur mit diesem Verhältnis erzeugt wurde. Wenn Sie den Text mit QImage zeichnen, sollten Sie auch die Schriftgröße mit diesem Verhältnis multiplizieren. Das Gleiche sollte mit geometrischen Formen und QPixmap :: scaled() gemacht werden.