Qt 提供的众多类库包罗万象,用起来实在是方便,QIcon 就是其中之一。
-
支持众多的图片格式,除了常见的 ico、bmp、jpe、gif、png,还有一些其他的格式。
-
可以通过 addFile 或 addPixmap 方法在加载资源时指定 Normal、Disabled、Active、Selected 四中模式以及 Off、On 两种状态对应的资源。
-
可以通过 paint 或 pixmap 方法在使用资源时指定使用哪种模式和状态下的资源。如果没有指定这些,QIcon 已经智能地为我们创建了默认的资源。
如何创建一个 icon ?
你无需做复杂的格式转换,只需将图片载入(嵌入软件的资源文件或磁盘上的文件等),然后随你怎么用。
QIcon(":/icon.png");
很多控件都提供了便捷的设置图标的方法,比如 setWindowIcon(const QIcon & icon) 、setIcon(const QIcon & icon) 等,可以将创建的 icon 直接传递给这些方法,比如:
button->setIcon(QIcon(":/icon.png"));
怎样给窗体设置 icon ?
使用 QApplication::setWindowIcon(const QIcon & icon) 可以设置应用程序所有窗体的默认图标。在某窗体中使用 QWidget::setWindowIcon(const QIcon & icon) 可以设置该窗体的图标,其优先级要高于 QApplication::setWindowIcon(const QIcon & icon) 。但用这样的方法只能设置或修改程序运行时的窗体图标,不能修改可执行程序文件的图标。
怎样自定义可执行程序文件的 icon ?
在Windows下,我们可以这做:
新建一文本文件,内容为:
IDI_ICON1 ICON DISCARDABLE "./images/app.ico"
保存为 appico.rc (名字无所谓)。然后在项目文件中加入如下内容:
RC_FILE += appico.rc
RC_FILE 是 qmake 中用于为应用程序指定资源文件的。编译后可以看到 exe 程序文件的图标已经变成我们自定义的了,而且运行程序后窗体的图标也跟着变了。如果修改资源 ID IDI_ICON1 为 IDI_ICON2 或其他文字会怎么样呢?结果是 exe 程序文件的图标还有,但是程序标题栏的图标却是默认的了。
|