由于 PC 显示设置的更改,Qt Widget 被部分裁剪
Posted
技术标签:
【中文标题】由于 PC 显示设置的更改,Qt Widget 被部分裁剪【英文标题】:Qt Widget is partly clipped due to change in PC display settings 【发布时间】:2020-02-12 14:04:25 【问题描述】:我在 Qt 应用程序中有固定大小的 QDialog。当电脑的显示设置中的“缩放和布局”从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 以使系统设置的比例、文本和其他项目不改变的任何建议?
【问题讨论】:
【参考方案1】:如果您正确实现它们,则使用布局而不是为子小部件或***小部件使用固定大小或位置将解决这些问题。您看到的大多数问题是因为您没有使用 Qt 的布局系统。
看this
【讨论】:
我试过了,但没有帮助。我希望我的应用程序独立于 PC 显示设置。以上是关于由于 PC 显示设置的更改,Qt Widget 被部分裁剪的主要内容,如果未能解决你的问题,请参考以下文章