由于 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 被部分裁剪的主要内容,如果未能解决你的问题,请参考以下文章

Qt中添加自定义位置Widget

QT控件之Qtable Widget

qt编程label显示图片,如何在图片上绘制相应图形呢?

QT 常用控件

Qt 5.1.1 中设置背景,背景为黑色,怎么解决?

在 Qt Stacked Widget 的特定小部件中更改背景颜色