Qt资源文件
Qt 帮助文档 The Qt Resource System
Qt 帮助文档介绍:
添加图片的资源的方法见:Qt资源文件
工程中的目录如下:
图片存放在文件夹 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 帮助文档介绍:
代码中使用:
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();
}
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
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 */
应用程序的属性:
如果在工程文件中,先添加版本信息等变量,最后再添加资源文件
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
1)找到一个图标(.ico)
2)新建一个 .rc
结尾的文件,内容如下(nameID 为自定义的名字):
.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)nameID
为 IDI_ICON1
,所有地方均有图标。
3)在工程中添加资源文件
RC_FILE += fileName.rc
在工程文件中使用 如下变量,注意在无资源文件时才有效。
RC_ICONS = icon.ico