You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Qt 6.4在Windows下示例程序High DPI缩放无法开箱即用求助

Qt 6.4.3双显示器高DPI缩放异常解决方案

针对你遇到的双显示器(100%/200%缩放)下单选框、复选框图标缩放异常的问题,可通过以下配置修复:

1. 嵌入Windows高DPI兼容Manifest文件

Qt Creator能正常缩放是因为其嵌入了正确的高DPI声明,而你的应用缺少该配置。创建以下文件并添加到项目中:

步骤1:创建app.manifest文件

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
    <assemblyIdentity version="1.0.0.0" name="YourApplicationName.app"/>
    <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
            <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
                <requestedExecutionLevel level="asInvoker" uiAccess="false"/>
            </requestedPrivileges>
        </security>
    </trustInfo>
    <asmv3:application>
        <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
            <dpiAware>True/PM</dpiAware>
        </asmv3:windowsSettings>
    </asmv3:application>
</assembly>

True/PM表示应用支持每显示器DPI缩放,是Windows 10及以上的推荐配置。

步骤2:关联Manifest到项目

创建app.rc文件:

1 24 "app.manifest"

在.pro文件中添加:

RC_FILE += app.rc

重新编译项目后,manifest会嵌入到可执行文件中,让Windows识别应用的高DPI兼容性。

2. 显式配置Qt高DPI属性

在main函数创建QApplication前,添加以下属性设置,确保Qt启用完整的高DPI支持:

#include <QApplication>
#include <QWidget>

int main(int argc, char *argv[])
{
    // 启用高DPI像素图支持
    QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps);
    // 启用样式表在高DPI下的正确传播
    QApplication::setAttribute(Qt::AA_UseStyleSheetPropagationInWidgetStyles);
    
    QApplication app(argc, argv);
    Window window;
    window.show();
    return app.exec();
}

注:Qt 6默认已启用Qt::AA_EnableHighDpiScaling,无需重复设置,但显式添加上述两个属性可解决部分边缘场景的缩放问题。

3. 调整缩放取整策略

若仍存在图标缩放不精确的问题,可设置环境变量禁用缩放取整:

// 在main函数开头添加
qputenv("QT_SCALE_FACTOR_ROUNDING_POLICY", "PassThrough");

该配置让Qt直接使用精确的缩放因子,避免因取整导致的元素尺寸异常。

4. 切换到高DPI友好的样式

部分旧样式对高DPI支持不佳,可切换到Qt的Fusion样式或Windows原生现代样式:

// 在创建QApplication后添加
app.setStyle(QStyleFactory::create("Fusion"));

按上述步骤依次配置后,应用应能在双显示器下正确响应不同缩放比例,单选框、复选框等元素的图标会和字体同步缩放。

内容的提问来源于stack exchange,提问作者Chris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 12:43:19