tiene tengo saber resolucion que pantalla desde cuantos como celular cambiar c++ qt user-interface resolution dpi

c++ - tengo - dpi de mi celular



Al cambiar el tamaño de escalado de DPI de la pantalla, el tamaño de la fuente de la aplicación Qt se hace más grande (3)

He creado alguna aplicación GUI usando Qt. Mi aplicación GUI contiene controles como el botón y el botón de opción. Cuando ejecuto la aplicación, los botones y fuentes dentro del botón parecen normales. Cuando cambio el tamaño de escala de DPI de la pantalla de 100% a 150% o 200%, el tamaño de fuente de los controles se vuelve más grande pero no controla el tamaño (botón, botón de opción) independientemente de la resolución. Debido a esto, el texto dentro de los controles se cortó. Por favor, vea la imagen adjunta.

Look de la aplicación Qt cuando el tamaño de escalado DPI está establecido en 100%

Mira la aplicación Qt cuando el tamaño de escalado DPI está establecido en 200%

También estoy ejecutando mi aplicación en algunas tabletas. En las tabletas, el valor de escala DPI debe ser más del 150%, de lo contrario, todo se mostrará muy pequeño.

Busqué en la web para crear la aplicación de interfaz de usuario en Qt, independientemente de la resolución y el valor de escala DPI, pero no tuve suerte. Así que estoy publicando mi búsqueda aquí. Por favor, avíseme si hay alguna manera de deshacerse de esto.


La compatibilidad con alta DPI está habilitada desde Qt 5.6 en adelante.

Establecer QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling) en el código fuente de la aplicación permite una escala automática de alta QGuiApplication::setAttribute(Qt::AA_EnableHighDpiScaling) de PPP.

AVISO: para usar el método de atributo, debe establecer el atributo antes de crear su objeto QApplication :

#include <QApplication> int main(int argc, char *argv[]) { QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); QApplication app(argc, argv); return app.exec(); }


Tenía una ventana de tamaño fijo que no era lo suficientemente grande como para caber todo el texto que contenía cuando se aplicaba la configuración de accesibilidad de Windows para ampliar todos los tamaños de texto. Windows lo hace a través de dpi aumenta. Lo solucioné recuperando el factor de escala del os y luego ajusté el tamaño de la ventana my algunos de sus diseños (que por alguna razón no pude escalar automáticamente).

Así es como obtuve la escala de dpi (en un archivo llamado "WindowsDpiScale.h"):

#ifndef WINDOWSDPISCALE_H #define WINDOWSDPISCALE_H #include <QtGlobal> #ifdef Q_OS_WIN #include <windows.h> const float DEFAULT_DPI = 96.0; float windowsDpiScale() { HDC screen = GetDC( 0 ); FLOAT dpiX = static_cast<FLOAT>( GetDeviceCaps( screen, LOGPIXELSX ) ); ReleaseDC( 0, screen ); return dpiX / DEFAULT_DPI; } #endif //Q_OS_WIN #endif // WINDOWSDPISCALE_H

Y luego, cómo lo apliqué en mi caso:

... #include "WindowsDpiScale.h" MainWindow::MainWindow( QWidget *parent ) : QMainWindow( parent ) { ... // Enlarge the window and various child widgets to accomendate // OS display scaling (i.e. accessibily options) setScaleToOsSettings(); ... } void MainWindow::setScaleToOsSettings() { #ifdef Q_OS_WIN setScale( windowsDpiScale() ); #endif } void MainWindow::setScale( float scale ) { // Resize the window this->setFixedSize( (int)(scale * this->maximumWidth()), (int)(scale * this->maximumHeight()) ); // Resize the layouts within the stacked widget foreach( QVBoxLayout * layout, windowUi_->pagerStackedWidget->findChildren<QVBoxLayout *>() ) layout->parentWidget()->setFixedSize( (int)(scale * layout->parentWidget()->contentsRect().width()), (int)(scale * layout->parentWidget()->contentsRect().height()) ); }


Usar diseños correctamente puede ayudar.

http://qt-project.org/doc/qt-4.8/layout.html

Decirle al SO que maneja los cambios de DPI, evitará cambios de fuente extraños que no estaba esperando.

http://msdn.microsoft.com/en-us/library/ms701681(v=vs.85).aspx

Para el espaciado de lugares críticos, puede verificar el tamaño de la fuente renderizada y luego establecer el tamaño mínimo de su objeto en función del tamaño resultante de su texto.

http://qt-project.org/doc/qt-4.8/qfontmetrics.html#details

https://blog.qt.digia.com/blog/2009/06/26/improving-support-for-higher-dpi-on-vista/

Podría intentar verificar con otras medidas integradas de Qt:

http://qt-project.org/doc/qt-4.8/qpaintdevice.html#widthMM

http://qt-project.org/doc/qt-4.8/qpaintdevice.html#logicalDpiX

Si está utilizando QML, intente obtener diseños prístinos de solo ubicación basada en anclajes.

http://qt-project.org/doc/qt-4.8/qml-anchor-layout.html

QApplication tiene algunas configuraciones que están relacionadas de alguna manera.

http://qt-project.org/doc/qt-4.8/qapplication.html#setDesktopSettingsAware

También puede especificar manualmente la fuente.

http://qt-project.org/doc/qt-4.8/qapplication.html#setFont

Espero que ayude.