(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)
参考:https://doc.qt.io/archives/qt-4.8/appicon.html
参考:https://stackoverflow.com/questions/1460361/how-to-set-application-icon-in-a-qt-based-project
参考:https://stuff.mit.edu/afs/athena/software/texmaker_v5.0.2/qt57/doc/qtcore/resources.html
应用程序有了图标之后,比较醒目的让大家能找到这个程序,所以是很有必要的。
定义方法一:qt的方式定义图标
参考stackoverflow中的方法,定义时
1. 使用qt编译时,在qt工程的pro文件中添加一句话
RC_ICON += your_icon.ico
2. 另外还可以采用在程序中指定,可以指定的图标格式比较多,可以是ico,也可以是png或jpg
QApplication a(argc, argv);
a. 可以一句话指定:
a.setWindowIcon(QIcon("./images/icon.png"));
b. 还有一种方式是先把图片加入到qrc资源中,例如
<qresource>
<file alias="icon.png">images/icon.png</file>
</qresource>
然后指定
a.setWindowIcon(QIcon(":/icon.png"));
定义方法二:windows的方式定义
该种方式加入了rc资源中,程序打包时会把ico打入程序中,后续程序执行不依赖png文件。
1. 首先新建/找一个ico文件,例如your_icon.ico,加入到工程中
2. 在项目中新建.rc文件(如label.rc)
放入这句话
IDI_ICON1 ICON DISCARDABLE "your_icon.ico"
3. 重新编译程序,该图标就会作为程序的默认图标了
4. 可能会有疑问?为什么这样子就可以定义程序的图标了?
我理解这是一种默认的处理值:
对于mfc程序的默认图标用的是ID<128的最小icon的ID值;
对于qt程序也是类似的,qt通常使用的程序图标就一个,只要包含进去就可以了
一些问题:
1. ico中文件可以放置多个大小不多,颜色位数不同的图标,程序的图标将使用哪一个?
例如
16*16颜色4位的
16*16颜色8位的
32*32颜色24位的
从我测试来看,程序会选取兼容位数最优的哪一个,最优的判断条件:大小,颜色位数越多越优
2. 添加了ico文件,编译却没有图标?
首先检查ico中有几个图标,最大size,颜色位数最多的那个是否绘制了图形;
其次检查访问的不是快捷方式—快捷方式的图标是不会被替换掉的;
不OK的话,按照定义方法重新定义一遍。
(Owed by: 春夜喜雨 http://blog.csdn.net/chunyexiyu)