阡陌 发表于 2023-12-19 01:00:43

QIcon



!(https://file.mculoop.com/images/2022/11/banner2_1668590184.jpg )

Qt 提供的众多类库包罗万象,用起来实在是方便,QIcon 就是其中之一。

- 支持众多的图片格式,除了常见的 ico、bmp、jpe、gif、png,还有一些其他的格式。

- 可以通过 `addFile` 或 `addPixmap` 方法在加载资源时指定 Normal、Disabled、Active、Selected 四中模式以及 Off、On 两种状态对应的资源。

- 可以通过 `paint` 或 `pixmap` 方法在使用资源时指定使用哪种模式和状态下的资源。如果没有指定这些,QIcon 已经智能地为我们创建了默认的资源。

!(https://file.mculoop.com/images/2022/11/icon_mode_state_1668590188.jpg)

<!--more-->



## 如何创建一个 icon ?

你无需做复杂的格式转换,只需将图片载入(嵌入软件的资源文件或磁盘上的文件等),然后随你怎么用。

```cpp
QIcon(":/icon.png");
```

很多控件都提供了便捷的设置图标的方法,比如 `setWindowIcon(const QIcon & icon)`、`setIcon(const QIcon & icon)` 等,可以将创建的 icon 直接传递给这些方法,比如:

```cpp
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 程序文件的图标还有,但是程序标题栏的图标却是默认的了。


页: [1]
查看完整版本: QIcon