CMake添加使用qt资源文件

news/2025/4/3 5:05:13/文章来源:https://www.cnblogs.com/czlnb/p/18805227

生成Qt资源文件

# 设置滤镜文件目录
set(FILTERS_DIR <资源文件所在目录>)# 设置生成的 QRC 文件的路径
set(QRC_FILTERS_FILE ${FILTERS_DIR}/<资源文件名称>.qrc)# 获取所有滤镜文件
file(GLOB_RECURSE  FILTERS_FILES "${FILTERS_DIR}/*.*")# 生成 qrc 文件的内容
set(QRC_CONTENT "<RCC>\n  <qresource prefix=\"/<资源前缀>\">\n")
foreach(FILE ${FILTERS_FILES})# 获取相对路径file(RELATIVE_PATH REL_PATH ${FILTERS_DIR} ${FILE})set(QRC_CONTENT "${QRC_CONTENT}    <file>${REL_PATH}</file>\n")
endforeach()
set(QRC_CONTENT "${QRC_CONTENT}  </qresource>\n</RCC>")# 将生成的 QRC 内容写入文件
file(WRITE ${QRC_FILTERS_FILE} "${QRC_CONTENT}")# 返回生成的 QRC 文件路径
set(GENERATED_QRC_FILE ${QRC_FILTERS_FILE} PARENT_SCOPE)

示例

# 设置滤镜文件目录
set(FILTERS_DIR ${CMAKE_SOURCE_DIR}/resource/skin)# 设置生成的 QRC 文件的路径
set(QRC_FILTERS_FILE ${FILTERS_DIR}/skin.qrc)# 获取所有滤镜文件
file(GLOB_RECURSE  FILTERS_FILES "${FILTERS_DIR}/*.*")# 生成 qrc 文件的内容
set(QRC_CONTENT "<RCC>\n  <qresource prefix=\"/skin\">\n")
foreach(FILE ${FILTERS_FILES})# 获取相对路径file(RELATIVE_PATH REL_PATH ${FILTERS_DIR} ${FILE})set(QRC_CONTENT "${QRC_CONTENT}    <file>${REL_PATH}</file>\n")
endforeach()
set(QRC_CONTENT "${QRC_CONTENT}  </qresource>\n</RCC>")# 将生成的 QRC 内容写入文件
file(WRITE ${QRC_FILTERS_FILE} "${QRC_CONTENT}")# 返回生成的 QRC 文件路径
set(GENERATED_QRC_FILE ${QRC_FILTERS_FILE} PARENT_SCOPE)

添加QT资源文件

qt5_add_resources(RESOURCE_FILES <资源文件路径>
)
# 可执行文件 
add_executable(${E_DEMO} WIN32 ${MAIN_CPP} ${RESOURCE_FILES} )

示例


qt5_add_resources(RESOURCE_FILES ${CMAKE_SOURCE_DIR}/resource/Filters/filters.qrc${CMAKE_SOURCE_DIR}/resource/skin/skin.qrc
)# 可执行文件 
add_executable(${E_DEMO} WIN32 ${MAIN_CPP} ${RESOURCE_FILES} )

使用资源文件

QImage aj_image = QImage(R"(:/skin/whiten.png)");

/skin是因为我写了前缀是/skin,然后资源文件时whiten.png

添加资源文件到静态库无效

当你的库是静态库时添加资源文件是无效的,要添加到调用静态库的动态库或者exe才可以,这样你的静态库也能共享该资源,也就是资源是和实质生成的可执行文件绑定的

❌ 不能把 .qrc 直接加到静态库

cmake

复制编辑

add_library(my_static_lib STATIC ${SRC_FILES} ${RESOURCE_FILES}) # ❌ 资源不会生效

这样不行!因为静态库不会打包 .qrc 资源,必须把 .qrc 绑定到最终的 exedll

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/909763.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《C Primer Plus 中文版 (第6版)》2020版最新修订版PDF下载

《C Primer Plus(第6版)中文版》在之前版本的基础之上进行了全新升级,它涵盖了C语言最新的进展以及C11标准的详细内容。本书还提供了大量深度与广度齐备的教学技术和工具,来提高你的学习。内容简介豆瓣评分9.1 重量级C大百科全书 中文版累计销量近百万册! C图书领域的独孤…

蓝桥杯2

今天写了写选择结构的题

ubuntu配置cuda和cudnn

nvidia-smi 查看当前驱动 https://developer.nvidia.com/cuda-toolkit-archive 选择匹配的驱动下载.run文件 sudo sh cuda****如果已经安装过显卡驱动,就不要再重复安装驱动了,按enter取消driverDriver: Not Selected Toolkit: Installed in /usr/local/cuda-12.4/ Please…

卢曼卡片盒笔记法介绍 Introduction to the Zettelkasten Method

你可能在工作中遇到了迫切需要解决的问题,可能被硕士论文压得喘不过来气,你想要提升你的博客水平,想写一本书,或者想在科研上更进一步。但是有一点需要明确,卡片盒笔记法不仅是一个帮助你完成工作或项目的工具,更是管理你生活中所遇到的知识的方法。原文链接:https://ze…

javawebDay5-Maven框架

单元测试右侧参数代表测试当前类的各项比例 Class:调用测试类中类 Method:调用方法比例 Line:调用代码量比例问题:目前猜测是用户名为中文导致

量化的前期准备

我看了不少国内量化的软件, 很多都在说QMT 迅投公司的产品, 专卖给券商, 然后券商给优质用户开 号就可以了。 各个券商的要求各不一样。 我这个因为我很多板块要求50w 存20工作日, 放了进去,居然符合券商要求了,答应给我开通了。 其实现在 很多开源的 比如easy trader 的…

[Tools] 使用 HammerDB 对 SQL Server 执行负载测试

HammerDBhttps://www.hammerdb.com/download.html HammerDB 是全球数据库行业最值得信赖的免费开源数据库基准测试应用程序,支持 Microsoft SQL Server、IBM Db2、Oracle、PostgreSQL、MariaDB 和 MySQL。HammerDB 在 Windows 和 Linux 上构建和测试,具有无与伦比的性能和可扩…

0401-git如何忽略已被版本控制的文件

前言 原因 我有很多的不关心的文件,这些都被版本控制了,我会感觉很扰乱自己的思路参考 https://www.cnblogs.com/yulinlewis/p/10236563.html 解决方法 1. 先删 git rm --cache *.pyc2. 加入.gitignore里 .gitignore文件内容 Code/.vs/ *.pyc !.gitignore效果这样就清爽多了,…

WindowsPE文件格式入门04.导入表

https://bpsend.net/thread-307-1-1.html PE 内部保存了导入的dll 和 api信息,这些信息保存到一个表里面.称为导入表, 导入表就是 记住一个可执行文件导入了那些dll,以及导入了这些dll中的哪些函数 一个可执行文件会调用其他DLL里的函数或数据,当PE文件被加载时,Windows加载器…

TODO 数据结构

先进先出(队列) 滑动窗口最大值(单调队列) 最长递增子序列(动态规划)(贪心+二分) 4.数组逆序对统计(归并排序) 快速获取集合重复值(哈希表) 6.快速获取集合最值(二叉堆) 7.无向图判环(并查集) 8.图的连通性问题(dfs+bfs)9.单源最短路dijkstra 10.多源最短路(…

CX9261S线控增益问题

简述 想将9361增益控制的逻辑移植到9261s上,先验证线控功能,配置后在接收单音信号测试中观测不到增益的变化。 配置修改 根据寄存器列表和手册修改配置的寄存器值,如图1所示。同时,修改了增益步进值为5dB。图1 手册中的控制逻辑 测试中,接收单音信号,并根据接收时钟MCLK产…