Qt 资源文件

Qt 资源文件

  • 资源文件介绍
  • 添加图片资源
  • 添加外部二进制资源
  • 添加Windows资源文件
    • 在工程文件中添加版本信息等
    • 在工程文件中添加资源文件
  • 设置应用程序图标
    • QWindow::setIcon() 方法
    • 工程中添加 .rc 文件
    • 用 RC_ICONS

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

资源文件介绍

Qt 帮助文档介绍:
Qt 资源文件_第1张图片
Qt 资源文件_第2张图片

添加图片资源

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


    
        image/0.jpg
        image/1.png
        image/2.png
    

在代码中使用:

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 帮助文档介绍:
Qt 资源文件_第4张图片

代码中使用:

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 帮助文档介绍:
Qt 资源文件_第5张图片

如果在工程文件中没有自己添加 .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 

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 

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 */

应用程序的属性:
Qt 资源文件_第6张图片

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

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 文件中的语法如下:
Qt 资源文件_第7张图片

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

你可能感兴趣的:(Qt,笔记,qt)