需求:qt的窗口、组件、字体需要适配屏幕分辨率。
思路:qt是根据显示器的物理长度或者宽度于分辨率的关系来计算dpi
实现:
#if(QT_VERSION >= QT_VERSION_CHECK(5,6,0)) QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); #endif QApplication a(argc, argv); const float DEFAULT_DPI = 96.0; HDC screen = GetDC(NULL); FLOAT dpiX = static_cast<FLOAT>(GetDeviceCaps(screen, LOGPIXELSX)); ReleaseDC(0, screen); float fontSize = dpiX / DEFAULT_DPI; QFont font = a.font(); font.setPointSize(font.pointSize()*fontSize); a.setFont(font);
注意:需要写在main()里