• Qt 资源文件


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

    资源文件介绍

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

    添加图片资源

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

    
        
            image/0.jpg
            image/1.png
            image/2.png
        
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在代码中使用:

    QPixmap pixmap(":/image/0.png");
    //如下写法也能正常使用
    //QPixmap pixmap(":image/0.png");
    
    ui->label->setPixmap(pixmap);
    ui->label->setFixedSize(pixmap.width(),pixmap.height());
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    添加外部二进制资源

    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();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    添加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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    执行 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 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    注意:如果工程文件中 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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    自己添加的资源文件利用之前生成的模板,将变量值修改,然后编码格式改为 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 */
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

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

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

    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
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

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

    设置应用程序图标

    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"
    
    • 1

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

    IDI_ICON1 ICON DISCARDABLE "icon.ico"
    
    • 1

    第一个参数定义资源的唯一名字,网上都是用 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
    
    • 1

    用 RC_ICONS

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

    RC_ICONS = icon.ico
    
    • 1
  • 相关阅读:
    手把手教会你微前端开发(vue-qiankun)
    原子操作类
    【Java】计算程序耗时多少
    软件工程——名词解释
    纯css手写switch
    etcd的安装和使用
    「学习笔记」重修左偏树
    SylixOS UDP网络应用编程
    iptables的使用简单测试
    MySQL-锁
  • 原文地址:https://blog.csdn.net/Lee567/article/details/126308450