2015-08-31 14 views
5

Laut Dokumentation hier http://doc.qt.io/qt-5/highdpi.html QT 5.4+ bietet hohe DPI-Unterstützung. Entweder fehlt mir aber etwas Grundlegendes oder die aktuelle Unterstützung befindet sich noch in einem sehr frühen Stadium. Ich schreibe eine brandneue Anwendung, also habe ich eine Chance, es von Grund auf zu tun. Ich verstehe, dass ich Layouts anstelle der festen Positionierung usw. verwenden müsste, aber es wird immer Fälle geben, in denen ich zum Beispiel eine minimale/maximale Größe eines Steuerelements angeben müsste. Ich kann sie im Editor angeben, aber das sind Gerätepixel. Wenn ich meine Windows-Einstellungen so ändere, dass sie 150% DPI verwenden, dann wären die Min/Max-Werte im Editor zu klein. Natürlich kann ich dieses Verhältnis erreichen und alle erforderlichen Werte im Code anpassen, aber welche Art von hoher DPI-Unterstützung gibt QT für mich, wenn ich alles von Hand machen muss? Ich meine, wie unterscheidet es sich von Pre QT 5.4?QT High DPI-Unterstützung unter Windows

Dann ist eine interessante QT_DEVICE_PIXEL_RATIO Umgebungsvariable. Es tut genau das, was ich brauche, es multipliziert alle im Editor eingestellten Pixel mit einem Faktor. Aber warum ist es eine Umgebungsvariable und keine Einstellung pro Anwendung? Warum unterstützt es nur ganzzahlige Werte von 2, 3 usw., da wir wissen, dass Windows Einstellungen wie 125, 150% usw. hat und warum konnte es nicht automatisch die Windows-Einstellung lesen und sich auf diesen Wert einstellen?

+0

Sie können schreiben, diese Frage als bug/Anregung unter http://bugreports.qt.io/ finden – Hyndrix

Antwort

0

Qt unterstützt ab Qt 5.6 vollständig High-DPI-Monitore über Attribute oder Umgebungsvariablen (außer unter OS X, auf denen die Unterstützung nativ ist). Für das Attribut Verfahren, Verwendung:

#include <QApplication> 

int main(int argc, char *argv[]) 
{ 
    QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); // DPI support 

    QApplication app(argc, argv); 
    return app.exec(); 
} 

oder die Systemumgebungsvariable:

QT_AUTO_SCREEN_SCALE_FACTOR=1

Mehr Informationen über die Qt blog

0

muss ich Antwort, die Antwort von @Nicolas Holthaus, dass die So aktivieren Sie Qt :: AA_EnableHighDpiScaling möglicherweise nicht absolut richtig. Da wird die Benutzer-DPI-Einstellung abgerundet. Z.B. Windows DPI-Einstellung ist 150%, das Ergebnis wird 200% für Schriftart und Größe sein, während 125% 100% sein werden.

Der richtige Weg zur korrekten DPI-Skalierung ist die Umgebungsvariable QT_SCALE_FACTOR. Wenn für dasselbe Beispiel die DPI-Einstellung 150% ist, setzen Sie QT_SCALE_FACTOR mit dem Wert 1.5. Dann wird das Ergebnis genau 150% in Schrift und Größe sein.

Siehe qt amtliches Dokument http://doc.qt.io/qt-5/highdpi.html und Sie werden

QT_SCALE_FACTOR [numeric] defines a global scale factor for the whole application, including point sized fonts.

Verwandte Themen