Qt实践之给应用程序设置logo

在软件开发过程中,我们希望给自己开发的应用程序添加一个有独一无二的logo用以与其他软件作区分。假如logo图片有了,那么如何使用Qt进行添加呢?
本文总结了以下两种方法:
方法一:使用QIcon类
方法二:使用RC_ICONS (针对windows系统)

方法一:使用QIcon

通过QIcon类,我们能够设置在不同模式和状态下可变的图标。这些像素图可作为图标用于具有特定动作的Qt小部件的显示。
比如说:

//按钮的图标设置
QToolButton *button = new QToolButton;
button->setIcon(QIcon("logo.ico"));

我们来看看QIcon("logo.ico")该条语句,其调用了QIcon的构造函数:

QIcon::QIcon(const QString &fileName)
Constructs an icon from the file with the given fileName. The file will be loaded on demand.
If fileName contains a relative path (e.g. the filename only) the relevant file must be found relative to the runtime working directory.
The file name can refer to an actual file on disk or to one of the application's embedded resources. See the Resource System overview for details on how to embed images and other resource files in the application's executable.
Use the QImageReader::supportedImageFormats() and QImageWriter::supportedImageFormats() functions to retrieve a complete list of the supported file formats.

Qt帮助手册里说,这里的filename可以是图标的绝对路径也可以是图标的相对路径,使用相对路径(例如,仅文件名)时,图标文件必须在运行时的工作目录中

要使用QIco类把logo.ico图标设置为软件的logo
首先,把logo.ico图标放在可执行文件的同一个目录中
在这里插入图片描述
其次,在主界面类MainWindow的构造函数中添加下列代码

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    QIcon logo("logo.ico");
    this->setWindowIcon(logo);
}

最后,点击可执行文件,即可查看到logo已设置成功了
在这里插入图片描述
但是,对于这种方法,有两点不足:
第一:我们会发现,使用这种方法,直接在Qt Creator运行程序时,是无法显示logo的:
在这里插入图片描述
这是代码中QIcon logo("logo.ico")设定的logo.ico路径导致的,仅使用文件名的话,在QtCreator中运行程序时Qt无法正常地找到logo.ico文件。
经过测试,下面两种路径都可正常显示:

    QIcon logo("../build-SetLogo-Desktop_Qt_5_10_1_MinGW_32bit-Release/release/logo.ico");//明确的相对路径
    QIcon logo("D:/train/QtTrain/SetLogo/logo.ico");//绝对路径

第二:这种方法只能在应用程序被执行时,在程序窗口的左上角显示logo,而不能在桌面图标中显示(比如图中的.exe文件就不可显示logo)。

方法二:使用RC_ICONS(针对windows系统)

为了让应用程序的logo能同时在运行时和桌面上(即,非运行时)显示,有必要借助平台的技术。对于windows系统来说,Qt在帮助手册(Setting the Application Icon)中给了我们这样的思路:
首先,我们把logo.ico文件放在应用程序源码的路径(即pro文件所在目录):
在这里插入图片描述
随后,在pro文件中,添加下列代码:

RC_ICONS = logo.ico

最后,点击运行,即可发现程序运行时的左上角和.exe文件都有logo:
在这里插入图片描述
其实在pro文件中添加RC_ICONS并qmake后,Qt就会给我们在build目录中生成一个.rc文件,即Windows资源文件,执行程序时,该文件会被自动编译和链接。
本质上时.rc文件里的IDI_ICON1 ICON DISCARDABLE语句,给我们设置logo。
在这里插入图片描述
假如用户已添加了自定义的.rc文件,不妨直接在该.rc文件中添加:

IDI_ICON1 ICON DISCARDABLE 	"log.ico"

同时,在pro文件中添加:

RC_FILE = #文件名#.rc

可以达到一样的效果。

至于Linux\MAC等系统,如何添加logo,读者可自行查阅Qt帮助手册Setting the Application Icon一文。

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值