Qt 资源文件

Qt资源文件
Qt 帮助文档 The Qt Resource System

资源文件介绍

Qt 帮助文档介绍:
Qt Resource System
Qt Resource System

添加图片资源

添加图片的资源的方法见:Qt资源文件
工程中的目录如下:
添加图片资源
图片存放在文件夹 image中,查看资源文件 resource.qrc如下:

<RCC>
    <qresource prefix="/">
        <file>image/0.jpg</file>
        <file>image/1.png</file>
        <file>image/2.png</file>
    </qresource>
</RCC>

在代码中使用:

QPixmap pixmap(":/image/0.png");
//如下写法也能正常使用
//QPixmap pixmap(":image/0.png");

ui->label->setPixmap(pixmap);
ui->label->setFixedSize(pixmap.width(),pixmap.height());

添加外部二进制资源

Qt 帮助文档 Resource Compiler (rcc)
QT中将资源文件转化成二进制资源
Qt中rcc工具简介

Qt 帮助文档介绍:
外部二进制资源

代码中使用:

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QString strCurPath = QCoreApplication::applicationDirPath();
    //资源的路径要写绝对路径,可以放在本地其他地方
    QString strSrcPath = "D:resource/resource.rcc"; 
    //注册资源
    bool ret = QResource::registerResource(strPath);
    Widget w;
    w.show();

    return a.exec();
}

添加Windows资源文件

Qt Help qmake Manual - Platform Notes - Adding Windows Resource Files
Qt 之添加 Windows 资源文件(.rc文件)
About Resource Files
Qt 之生成 Window 资源文件(.rc 文件)

Qt 帮助文档介绍:
添加资源文件

如果在工程文件中没有自己添加 .rc 资源文件,则定义图标,版本信息等变量后在执行 qmake 后会自动生成资源文件。
Qt 之生成 Window 资源文件(.rc 文件)

在工程文件中添加版本信息等

TARGET = demo
TEMPLATE = app
RC_ICONS = desktopIcon.ico
QMAKE_TARGET_PRODUCT = product name
QMAKE_TARGET_COPYRIGHT = copyright
VERSION = 1.0.0
VERSION_PE_HEADER = 1.0
QMAKE_TARGET_COMPANY = company
QMAKE_TARGET_DESCRIPTION = description

执行 qmake 后,在构建文件夹和 Makefile 同级目录中生成 .rc 文件,如下:

#include <windows.h>

IDI_ICON1	ICON	DISCARDABLE	"I:\\Qt\\source\\demo\\desktopIcon.ico"

VS_VERSION_INFO VERSIONINFO
	FILEVERSION 1,0,0,0
	PRODUCTVERSION 1,0,0,0
	FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
	FILEFLAGS VS_FF_DEBUG
#else
	FILEFLAGS 0x0L
#endif
	FILEOS VOS__WINDOWS32
	FILETYPE VFT_DLL
	FILESUBTYPE 0x0L
	BEGIN
		BLOCK "StringFileInfo"
		BEGIN
			BLOCK "040904b0"
			BEGIN
				VALUE "CompanyName", "company\0"
				VALUE "FileDescription", "description\0"
				VALUE "FileVersion", "1.0.0.0\0"
				VALUE "LegalCopyright", "copyright\0"
				VALUE "OriginalFilename", "demo.exe\0"
				VALUE "ProductName", "product name\0"
				VALUE "ProductVersion", "1.0.0.0\0"
			END
		END
		BLOCK "VarFileInfo"
		BEGIN
			VALUE "Translation", 0x0409, 1200
		END
	END
/* End of Version info */

注意:如果工程文件中 FileDescription 等变量值用中文,则属性显示乱码,生成的 rc 文件为 UTF-8 编码。

在工程文件中添加资源文件

如果在工程文件中同时使用变量 RC_FILE 添加资源文件,然后又使用变量 RC_ICONS 等,则这些会被忽略,不会在构建文件中生成资源文件。

TARGET = demo
TEMPLATE = app

RC_FILE += demo_resource.rc

RC_ICONS = desktopIcon.ico
QMAKE_TARGET_PRODUCT = product name
QMAKE_TARGET_COPYRIGHT = copyright
VERSION = 1.0.0
VERSION_PE_HEADER = 1.0
QMAKE_TARGET_COMPANY = company
QMAKE_TARGET_DESCRIPTION = description

DESTDIR += bin

自己添加的资源文件利用之前生成的模板,将变量值修改,然后编码格式改为 GBK编码则应用程序的属性中可正常显示中文。
如果使用简体中文,也可使用 GB2312 编码(GB2312、GBK、GB18030 这几种字符集的主要区别是什么?

#include <windows.h>

IDI_ICON1	ICON	DISCARDABLE	"I:\\Qt\\source\\demo\\desktopIcon.ico"

VS_VERSION_INFO VERSIONINFO
	FILEVERSION 1,0,0,0
	PRODUCTVERSION 1,0,0,0
	FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
	FILEFLAGS VS_FF_DEBUG
#else
	FILEFLAGS 0x0L
#endif
	FILEOS VOS__WINDOWS32
	FILETYPE VFT_DLL
	FILESUBTYPE 0x0L
	BEGIN
		BLOCK "StringFileInfo"
		BEGIN
			BLOCK "040904b0"
			BEGIN
				VALUE "CompanyName", "公司名称\0"
				VALUE "FileDescription", "文件描述\0"
				VALUE "FileVersion", "1.0.1.0\0"
				VALUE "LegalCopyright", "版本信息 copyright\0"
				VALUE "OriginalFilename", "demo.exe\0"
				VALUE "ProductName", "产品名称\0"
				VALUE "ProductVersion", "1.0.0.0\0"
			END
		END
		BLOCK "VarFileInfo"
		BEGIN
			VALUE "Translation", 0x0409, 1200
		END
	END
/* End of Version info */

应用程序的属性:
应用程序的属性

如果在工程文件中,先添加版本信息等变量,最后再添加资源文件

TARGET = demo
TEMPLATE = app

RC_ICONS = desktopIcon.ico
QMAKE_TARGET_PRODUCT = product name
QMAKE_TARGET_COPYRIGHT = copyright
VERSION = 1.0.0
VERSION_PE_HEADER = 1.0
QMAKE_TARGET_COMPANY = company
QMAKE_TARGET_DESCRIPTION = description

DESTDIR += bin

RC_FILE += demo_resource.rc

效果不变,仍以资源文件的内容为准。

设置应用程序图标

Qt Creator快速入门 第2版 第二章
Qt Help Setting the Application Icon
ICON resource

QWindow::setIcon() 方法

工程中添加 .rc 文件

1)找到一个图标(.ico)
2)新建一个 .rc 结尾的文件,内容如下(nameID 为自定义的名字):
.rc 文件中的语法如下:
rc 文件语法

IDI_ICON1 ICON "icon.ico"

也可以加一些属性:Common Resource Attributes

IDI_ICON1 ICON DISCARDABLE "icon.ico"

第一个参数定义资源的唯一名字,网上都是用 IDI_ICON1 命名,用其他的名字任务管理器无图标?

为什么要用 IDI_ICON1 命名 ?相关文章如下:

WINDOWS SDK 自定义窗口图标以及加载资源l
DI_ICON1和IDI_ICON1有什么区别?
Windows编程第一课:纯手工创建一个窗体
c++中.rc文件和resource.h的问题
IDI_ICON1

测试:
1)如果 nameID 随便写个名字,如11.exe应用程序的图标是正常的,但任务栏和任务管理器中无图标显示。
2)nameIDIDI_ICON1,所有地方均有图标。

3)在工程中添加资源文件

RC_FILE += fileName.rc

用 RC_ICONS

在工程文件中使用 如下变量,注意在无资源文件时才有效。
RC_ICONS

RC_ICONS = icon.ico
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值