qt-cmake Windows设置应用程序图标和任务栏图标

应用程序图标

1.项目源代码根目录,即和cmakelists.txt同级目录下创建app_win32.rc文件,内容如下

IDI_ICON1 ICON DISCARDABLE "favicon.ico"

2.cmake中add_executable命令后包含app_win32.rc文件,如

add_executable(${PROJECT_NAME}
"src/main.cpp"
"app_win32.rc"
)

3.将favicon.ico文件放入同级目录
4.重新执行cmake并编译项目,即可看到exe文件显示设置的ico图标

任务栏图标

1.多个窗口任务栏图标一致

QGuiApplication app(argc, argv);
app.setWindowIcon(QIcon(":/images/favicon.ico"));

主函数向上面那样设置就好,正常启动程序,所有的窗口任务栏都会显示上面设置的图标

2.多个窗口任务栏图标不一致

qml中给window设置objectName

QWindow *mainWindow = engine.rootObjects().first()->findChild<QWindow *>("mainWindowObject");;
if (mainWindow) {
    mainWindow->setIcon(QIcon(":/images/favicon.ico"));
    qDebug() << "main window icon is  set";
    mainWindow->show();

}
else{
    qDebug() << "main window icon is not set";
    return app.exec();
}
QWindow *loginWindow = engine.rootObjects().first()->findChild<QWindow *>("loginWindowObject");

if (loginWindow) {
    loginWindow->setIcon(QIcon(":/images/xiaoxin.ico"));
    qDebug() << "login window icon is  set";

}
else{
    qDebug() << "login window icon is not set";
    return app.exec();
}

启动程序,可以看到两个窗口显示不一样的图标

注意:必须是ico格式,并且使用:/开头的路径格式

作者:lovecatcoder
链接:https://www.jianshu.com/p/196fdfc783d1
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。