用途:为 Rust+CxxQt QML 应用在 Windows 上设置可执行文件、任务栏、窗口、QML 与托盘图标,采用三层图标策略。
主要能力:第一层用 winresource 在编译期把 .ico 编入 PE 资源,可靠设置任务栏、Alt+Tab 与标题栏图标,无需运行时文件依赖;第二层把 .svg/.png 嵌入 QRC,供 QML 的 Image 或运行时 setWindowIcon 使用;第三层为可选 C++ 运行时 setter,在 QGuiApplication::new() 后调用 QGuiApplication::setWindowIcon(),作为补充。另含 windows_subsystem 属性抑制控制台窗口,以及 DPI 感知的 app.manifest 模板。
使用方式:在 Cargo.toml 的 [build-dependencies] 加入 winresource = "0.1";build.rs 中在 #[cfg(windows)] 下用 WindowsResource 设置 set_icon 与 set_manifest_file 并 compile;在 CxxQtBuilder 的 .qrc_resources([...]) 加入 svg/png;用 cc_builder 编译 src/app_icon.cpp;main.rs 声明 extern "C" { fn set_app_icon(); } 并在 QGuiApplication::new() 后调用。QML 中 QRC 路径格式为 qrc:/qt/qml/{模块URI点换斜杠}/resources/{文件名}。托盘图标用 Qt.labs.platform 的 SystemTrayIcon 单独绑定。
适用场景:需要品牌图标在 Windows 各界面一致显示的 Rust+CxxQt 桌面应用。
限制:仅针对 Windows;需准备 .ico、.svg、.png、app.manifest 四类资源并纳入版本控制;QRC 路径拼写错误会静默失败;若第一层已生效,第三层可能无可见效果。验证需构建 release 并直接运行 exe 检查各界面。