我在Qt应用程序中有固定大小的QDialog。当PC的显示设置中的“比例和布局”从100%更改为150%时,小部件将被部分裁剪。
这里是代码:
void windowsDpiScale()
{
const HDC hDC = GetDC(NULL);
const int dpiX = GetDeviceCaps(hDC, LOGPIXELSX);
const int dpiY = GetDeviceCaps(hDC, LOGPIXELSY);
ReleaseDC(NULL, hDC);
// Perform the scaling.
MulDiv(100, dpiX, 96);
MulDiv(100, dpiY, 96);
}
int main()
{
windowsDpiScale();
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QCoreApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); //HiDPI pixmaps
QApplication main_application(argc, argv);
}
我也尝试设置qputenv(“ QT_AUTO_SCREEN_SCALE_FACTOR”,“ 1”);和QGuiApplication :: setDesktopSettingsAware(false);但这没有帮助。我正在使用Qt 5.8版。关于如何修复UI的任何建议,以使系统设置的比例,文本和其他项目保持不变?
如果正确实施子布局或顶层窗口小部件,请使用布局而不为其使用固定大小或位置将解决这些问题。您看到的大多数此类问题是因为您尚未使用Qt的布局系统。
看this