c++ qt highdpi

c++ - ¿Cómo obtener una interfaz de usuario nítida en ppp alto con Qt 5.6?



highdpi (2)

Estoy desarrollando en un monitor 4k y es un dolor ...

Finalmente, logré configurar QtDesigner y luego encontré este problema:

Cuando usa QT_AUTO_SCREEN_SCALE_FACTOR=1 y compila una aplicación con un QT_AUTO_SCREEN_SCALE_FACTOR=1 y otros widgets básicos, se ve en una pantalla de 4k. De lo contrario, las dimensiones de los controles son correctas y, como se esperaba, simplemente no son nítidas, sino más bien pixeladas.

Estoy ejecutando Windows 10 Home 64bit en una pantalla de 4k con 200% de zoom DPI, usando Qt 5.6 RC msvc2015 64bit y probé con lograr los mismos resultados usando

QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling);

Si yo uso

QGuiApplication::setAttribute(Qt::AA_DisableHighDpiScaling);

los controles son nítidos, el tamaño del texto es correcto, PERO todas las dimensiones son mucho más pequeñas.

¿Cómo hago los controles nítidos en la pantalla de alto DPI?


Como dice la documentación de Qt:

Use QT_AUTO_SCREEN_SCALE_FACTOR to enable platform plugin controlled per-screen factors. QT_SCREEN_SCALE_FACTORS to set per-screen factors. QT_SCALE_FACTOR to set the application global scale factor.

Puedes intentar hacer lo que Qt Creator está haciendo:

static const char ENV_VAR_QT_DEVICE_PIXEL_RATIO[] = "QT_DEVICE_PIXEL_RATIO"; if (!qEnvironmentVariableIsSet(ENV_VAR_QT_DEVICE_PIXEL_RATIO) && !qEnvironmentVariableIsSet("QT_AUTO_SCREEN_SCALE_FACTOR") && !qEnvironmentVariableIsSet("QT_SCALE_FACTOR") && !qEnvironmentVariableIsSet("QT_SCREEN_SCALE_FACTORS")) { QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); }

Básicamente, lo importante es la última línea QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling); .


Con QT_AUTO_SCREEN_SCALE_FACTOR, el tamaño en puntos de las fuentes no se modifica, solo se aumentan de sus píxeles originales, por lo que nunca serán suaves, solo más baches.

Ref: http://doc.qt.io/qt-5.6/highdpi.html#high-dpi-support-in-qt "Esto no cambiará el tamaño de las fuentes de tamaño en puntos"

Debe usar QT_SCALE_FACTOR en su lugar para volver a escalar su aplicación, no solo para volver a escalar sus píxeles.