的排查与修复)
Qt 程序在 Windows 上 UI 回退到经典样式Windows 2000 风格的排查与修复现象在 Windows 上运行 Qt 程序时界面控件呈现Windows 2000/经典样式方正灰色按钮、直角边框而不是现代的 Windows 视觉样式。根因概述此问题的本质是Windows 没有为应用程序加载 Common Controls v6或者Qt 缺少 Windows Vista 样式插件。Windows 有两套控件库comctl32.dllv5默认→ 经典/2000 风格comctl32.dllv6需 manifest 声明→ 现代视觉样式Qt 5 在 Windows 上默认使用qwindowsvistastyle.dll样式插件渲染控件该插件依赖 Common Controls v6。两者缺一不可。排查清单按可能性从高到低1. 缺少 Qt 样式插件最常见如果程序打包部署时没有拷贝styles插件目录Qt 找不到qwindowsvistastyle.dll会自动回退到qwindowsxpstyle经典风格。检查方法在 exe 所在目录下是否有styles/文件夹styles/下是否有qwindowsvistastyle.dll修复方法从 Qt 安装目录拷贝 styles 插件Qt安装目录\plugins\styles\ → 程序目录\styles\例如C:\Qt\Qt5.12.2\5.12.2\msvc2017_64\plugins\styles\ qwindowsvistastyle.dll → package\styles\最终结构package/ HSM.exe Qt5Core.dll Qt5Gui.dll Qt5Widgets.dll ... styles/ qwindowsvistastyle.dll预防措施使用windeployqt自动部署不会遗漏任何文件C:\Qt\Qt5.12.2\5.12.2\msvc2017_64\bin\windeployqt.exe HSM.exe2. Manifest 未嵌入或无效Qt 的 MSVC 构建需要在可执行文件中嵌入 manifest声明对 Common Controls v6 的依赖。如果 manifest 缺失或格式错误Windows 不会启用视觉样式。检查方法在 exe 所在目录看看是否有残留的.exe.manifest外部文件有就说明 manifest 没嵌入进去用 Resource Tuner 或 Visual Studio 打开 exe查看 RT_MANIFEST 资源是否存在修复方法二选一方法 Aqmake 项目.pro文件在.pro文件中添加win32 { CONFIG embed_manifest_exe }然后重新运行 qmake 以重建 VS 项目文件。方法 BVS 项目.vcxproj文件直接修改在.vcxproj中确保每个配置Debug/Release的Link段包含GenerateManifesttrue/GenerateManifestEmbedManifesttrue/EmbedManifest确保有独立的Manifest段ManifestEmbedManifesttrue/EmbedManifest/Manifest同时确保链接器附加选项中声明了 Common Controls v6 依赖AdditionalOptions/MANIFESTDEPENDENCY:typewin32 nameMicrosoft.Windows.Common-Controls version6.0.0.0 publicKeyToken6595b64144ccf1df language* processorArchitecture* %(AdditionalOptions)/AdditionalOptions注意仅有MANIFESTDEPENDENCY但缺少GenerateManifest/EmbedManifest链接器可能不会真正生成和嵌入 manifest。两者必须同时配置。3. 对方系统的视觉样式被关闭检查方法WinR→ 输入SystemPropertiesPerformance→ 回车确认选中的是“让 Windows 选择计算机的最佳设置”或至少勾选了“在窗口和按钮上使用视觉样式”如果选择的是调整为最佳性能所有程序的控件都会变成经典样式。4. 兼容性设置干扰检查方法右键exe→属性→兼容性选项卡确保以下全部未勾选“以兼容模式运行这个程序”“禁用视觉主题”“禁用桌面元素”5. 远程桌面导致通过远程桌面连接运行时RDP 默认降低视觉效果以节省带宽。修复方法远程桌面连接工具 →体验选项卡 → 性能调至LAN10 Mbps 或更高或更高6. 缺少 VC 运行时对方系统缺少对应版本的 Visual C Redistributable。修复方法根据编译工具集安装对应版本v143 → Visual C 2022 Redistributable x64v142 → Visual C 2019 Redistributable x64微软官方下载搜索 “Microsoft Visual C Redistributable”排查流程总结exe 在自己电脑正常 ├── 是 → 非编译问题按 1 → 3 → 4 → 5 排查 └── 否 → 按 2 → 1 → 3 排查同一 exe 在 A 电脑正常、B 电脑不行 → 非 exe 问题按 3 → 4 → 5 → 6 排查