Qt6中setWindowIcon()仅在特定目录运行时失效问题排查
Qt6应用仅在
%LocalAppData%\Programs\acquisition目录运行时窗口图标失效问题 问题现象
- 名为
acquisition的Qt6应用,仅在%LocalAppData%\Programs\acquisition目录运行时无法设置窗口图标 - 将程序文件夹复制到
%LocalAppData%\Programs外任意位置,或该目录下其他子目录(如acquisition_copy)时,窗口图标均可正常显示 - 该应用在macOS和Linux平台无此问题
- 已通过
QT_DEBUG_PLUGINS确认SVG插件加载正常,切换为PNG图标仍存在该目录特定失效问题
复现环境
- 构建环境:Qt Creator 13.0.2 + Qt 6.5.3
- 系统:Windows 11 23H2
- 部署方式:使用windeployqt部署,无需Inno Setup即可复现
项目文件清单
CMakeLists.txt main.cpp resources.qrc deploy.cmd assets/icon.svg
CMakeLists.txt内容
cmake_minimum_required(VERSION 3.21.1) project(acquisition) find_package(Qt6 6.5.3 REQUIRED COMPONENTS Gui Svg Widgets ) qt_standard_project_setup() qt_add_executable(acquisition WIN32 main.cpp resources.qrc ) set_target_properties(acquisition PROPERTIES AUTORCC TRUE) target_link_libraries(acquisition PUBLIC Qt::Core Qt::Gui Qt::Svg Qt::Widgets )
main.cpp内容
#include <QApplication> #include <QDialog> #include <QDir> #include <QIcon> int main(int argc, char* argv[]) { Q_INIT_RESOURCE(resources); QApplication app(argc, argv); QDialog dialog; dialog.setWindowIcon(QIcon(":/assets/icon.svg")); dialog.show(); return app.exec(); }
resources.qrc内容
<!DOCTYPE RCC> <RCC> <qresource> <file>assets/icon.svg</file> </qresource> </RCC>
deploy.cmd内容
set "WINDEPLOYQT=C:\Qt\6.5.3\msvc2019_64\bin\windeployqt.exe" set "BUILD_DIR=.\build\Desktop_Qt_6_5_3_MSVC2019_64bit-Release" set "DEPLOY_DIR=%BUILD_DIR%\deploy" rmdir /S /Q "%DEPLOY_DIR%" mkdir "%DEPLOY_DIR%" copy "%BUILD_DIR%\acquisition.exe" "%DEPLOY_DIR%" "%WINDEPLOYQT%" "%DEPLOY_DIR%\acquisition.exe" --release --no-compiler-runtime --dir "%DEPLOY_DIR%"
疑问
将部署后的文件夹复制到%LocalAppData%\Programs\acquisition运行时图标失效,其他目录正常,请问该问题的原因是什么?
内容的提问来源于stack exchange,提问作者Gerwaric
相关产品推荐
相关产品推荐

