opengl png图片 qt_Qt资源文件的格式,并用CMake添加Qt资源文件
目录
......QRC文件的写法用CMake添加Qt资源文件添加QRC文件的函数步骤CPP中使用QRC文件使用QRC文件实例程序结果QRC文件CMakeLists.txt文件Dialog.h文件Dialog.cpp文件main.cpp文件
......
因为开题,荒废了一个多月没学习,感觉除了对MATLAB还有点印象,C++/Qt基本都忘得差不多了。前天开题完了,准备从头重新复习一下。
上午折腾了两小时的用CMake添加Qt资源文件的问题。主要是:'Unknown CMake command "QT5_ADD_RESOURCES"'
这个error,我脑袋一时短路没整明白,折腾两小时后才解决,于是做篇推送记录一下。
其实之前也没用过资源文件,都是把图片或者文件放在文件夹中跟exe程序放一块来调用。不过既然是复习,就一块学了吧。qt的资源文件还是很好用的,直接把资源文件编译到exe程序里了,不用附加了,比较清爽。不过比较大的文件还是不要放到QRC里了,一般都是放点图片啥的。
还有,这是我写的最快的一次推送,差不多一个小时把。
QRC文件的写法
RCC> # 这个是文件头,用来说明是一个RCC文件
# 这个和下面的中间填写资源 # 这个 和下面的中间填写资源文件路径(相对路径)images/mainPic.jpg # 相对路径要包含在和中间images/icon.png
如图:
资源文件写好了,下面就要添加了。
用CMake添加Qt资源文件
添加QRC文件的函数
qt5_add_resources
步骤
set(CMAKE_AUTORCC ON),这个要先写上
set(QRC_FILE resource.qrc)
qt5_add_resources(QRC ${QRC})
具体的解释看下面的注释吧(左右滑动)
set(CMAKE_AUTORCC ON) # 这个要写上
set(QRC_FILE resource.qrc) # 可能有多个QRC文件,我这里就写了一个,这行是把所有的QRC文件名赋值给 QRC_FILE变量(变量名自己取)
qt5_add_resources(QRC ${QRC_FILE}) # 用这个函数把这些QRC文件添加进来
# QRC文件需要参与编译,所以在add_library和add_executable中可能都需要添加(如果你在库或者主程序中使用了QRC资源的话),比如:add_executable(20 main.cpp Dialog.cpp Dialog.h ${QRC}) # 记得把资源文件也参与编译!
Note: 你可能会出现:Unknown CMake command "QT5_ADD_RESOURCES" 这样的错误!
这是因为你在使qt5_add_resources
这个函数之前没有使用find_package
来导入Qt5的库,qt5_add_resources
是Qt5的CMake文件中的函数。所以你必须要先用find_package来导入QT5的包,然后才能使用qt5_add_resources
来添加资源文件。
CPP中使用QRC文件
this->setWindowIcon(QPixmap(":/images/icon.png"));mainPic->setPixmap(QPixmap(":/images/mainPic.jpg"));
就这样用,:/ + 在QRC文件中写的相对路径
。
下面举一个使用QRC文件的例子
使用QRC文件实例
首先,我把qrc文件和包含图片的文件夹与主CMakeLists.txt文件放在同一级目录中,那么这个资源图片的相对路径就是: images/xxx.png
。
关于项目结构就不具体描述了,之前也写了一篇CMake的推送,那里面有说。
程序结果
QRC文件
文件名自己随便取
RCC>"1.0">images/mainPic.jpgimages/icon.png
CMakeLists.txt文件
cmake_minimum_required(VERSION 3.10)project(20)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_INCLUDE_CURRENT_DIR ON)set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/bin)
set(CMAKE_AUTOMOC ON)set(CMAKE_AUTORCC ON)
## 一定要在使用 qt5_add_resources前调用find_package.因为你需要先导入Qt5的库后才会有qt5_add_resources这个函数。## qt5_add_resources这个函数是在qt5的CMakeLists.txt的库中。所以以后还是在开头导入库为好。set(Qt5_DIR "C:\\Qt\\Qt5_12_MSVC\\lib\\cmake\\Qt5") # Windows中find_package(Qt5 COMPONENTS Core Gui Widgets REQUIRED)
# 添加资源文件(添加好的资源要参与编译,所以add_library和add_executable中都可能需要加)set(QRC_FILE resource.qrc)qt5_add_resources(QRC ${QRC_FILE})
add_executable(20 main.cpp Dialog.cpp Dialog.h ${QRC}) # 记得把资源文件也参与编译!
target_link_libraries(20 PUBLIC Qt5::Core Qt5::Gui Qt5::Widgets)
Dialog.h文件
//// Created by MitchHong on 2020/7/4.//
#include #include #include #include #include
class Dialog : public QDialog{ Q_OBJECT
public: explicit Dialog(QWidget* parent = nullptr);// ~Dialog() Q_DECL_OVERRIDE = default;
private: QLabel* mainPic; //主显示图片 QPushButton* closeBtn; //关闭按钮
private: void setupDialog(); void setupConnections();};
Dialog.cpp文件
在这里使用QRC资源文件!
//// Created by MitchHong on 2020/7/4.//
#include "Dialog.h"
Dialog::Dialog(QWidget* parent): QDialog(parent), mainPic(new QLabel), closeBtn(new QPushButton("Close")){ setupDialog(); setupConnections();}
void Dialog::setupDialog(){ this->setFixedSize(500, 500); this->setWindowIcon(QPixmap(":/images/icon.png")); mainPic->setPixmap(QPixmap(":/images/mainPic.jpg")); mainPic->setScaledContents(true);
auto* lay = new QVBoxLayout; lay->addWidget(mainPic);
auto* lay1 = new QHBoxLayout; lay1->addStretch(1); lay1->addWidget(closeBtn); lay->addLayout(lay1);
this->setLayout(lay);}
void Dialog::setupConnections(){ connect(closeBtn, &QPushButton::clicked, this, [this]()->void{ this->close(); });}
main.cpp文件
#include #include "Dialog.h"
int main(int argc, char* argv[]) { QApplication app(argc, argv);
Dialog w;
w.show();
return QApplication::exec();}
---END---
opengl png图片 qt_Qt资源文件的格式,并用CMake添加Qt资源文件相关推荐
- word转pdf图片模糊怎么办_嗨格式PDF转换器如何将PDF文件转换成Word?PDF转Word方法...
日常办公,我们有时候需要将PDF文件格式进行转换,鉴于PDF文件的特殊性,这就需要借助专业软件,例如嗨格式PDF转换器.嗨格式PDF转换器支持PDF.Word.Excel.PPT.图片等多种文件格式互 ...
- opengl png图片 qt_QT中使用OpenGL绘图
在之前说道过VS2010中配合OpenGL绘图的问题,这回是想要说说在QT中使用OpenGL,其实两者并无太大区别,因为都是基于C++语言的. 主要是想简要介绍下OpenGL在QT中的使用方法跟一些错 ...
- opengl png图片 qt_Qt翻页效果实现(四):OpenGL图像渲染
OpenGL贴图 OpenGL里面的图像渲染,是通过将图片映射成纹理,然后通过顶点坐标和对应的纹理坐标映射到物体表面. 顶点坐标 这里我们只有三个屏平面,在Qt翻页效果实现(二)文章中各点的坐标,在O ...
- opengl png图片 qt_Qt学习:三维绘图之OpenGL和Qt的结合(转)
OpenGL是绘制三维图形的标准API.Qt应用程序可以使用QtOpenGL模块绘制三维图形,该模块依赖于系统的OpenGL库.Qt OpenGL模块提供QGLWidget类,可以通过对它子类化,并使 ...
- [matlab编程实践].cli文件二进制格式读取【3D打印切片文件】
文章目录 零.cli文件简介 0.0 cli文件说明文档 0.1 下面是我们这使用的3D打印机的流程. 0.2 cli文件格式 0.3 cli文件结构 0.4 几何数据部分详解 一.matlab 程序 ...
- android framework资源,android源码framework下添加新资源的方法
编译带有资源的jar包,需要更改frameworks层,方法如下: 一.增加png类型的图片资源 1.将appupdate模块所有用到的png格式图片拷贝到framework/base/core/re ...
- linux开发板添加qt库文件_QT程序怎么移植到开发板并运行
需要的条件: 1.上位机编译好的可执行文件,以hello为例 在虚拟机的Ubuntu下,写好代码之后,定位到当前目录,执行命令 $ qmake -project //生成工程文件.pro $ qmak ...
- CMake添加不同目录文件的方法
三种使用CMake构建工程添加子目录的方法 文件目录结构 . ├── CMakeLists.txt ├── inc │ ├── ansi_def.h │ ├── ansi.h │ ├── ansi_p ...
- php 显示要上传的图片格式,php判断文件上传图片格式的实例详解
php判断文件上传图片格式的实例详解 判断文件图片类型, $type = $_FILES['image']['tmp_name'];//文件名 //$type = $this->getImage ...
最新文章
- Spring整合Hibernate图文步骤
- java高并发(九)线程封闭
- 《大型网站技术架构:核心原理与案例分析》-- 读书笔记 (2) : 大型网站核心架构要素(1) -- 性能...
- python wrapper_Python functools之partial, update_wrapper, wraps
- Hive之 hive的三种使用方式(CLI、HWI、Thrift)
- 万万没想到 Java 中最重要的关键字竟然是这个!
- Pixelmetrix :OTT Media Grinder (OTT TV 质量评价设备)
- NYOJ455 - 黑色帽子
- 培华学院2012届计算机专业多少人,西安培华学院学子在中国大学生计算机设计大赛中取得多个国奖...
- 阶段3 2.Spring_03.Spring的 IOC 和 DI_6 spring中bean的细节之三种创建Bean对象的方式
- bzoj 1019: [SHOI2008]汉诺塔
- adb.exe可能被其他程序关闭_苹果说关闭后台 反而会缩短电池寿命?!
- win10用账户登录计算机,Win10没有改用本地账户登录选项的解决方案
- discuz招商加盟门户整站模板
- linux怎么让cpu不自动降频,Win10 CPU自动降频怎么办?Win10下让CPU不降频设置方法
- 固态变 SATAFIRM S11
- Python优雅地生成拼图效果
- redis击穿,穿透,雪崩以及解决方案
- 学习笔记-Windows 安全
- 8月收到的最新更新附近的人交友系统源码,自动打招呼,自动发视频通话+自动聊天多功能机器人交友源码
热门文章
- CPU可以跑多快?地球到火星的距离告诉你!
- 好机会,我要帮女同事解决Maven冲突问题
- mysql索引类型normal,unique,full text
- 【开发技巧】解决微信author2.0回调内网本地问题
- JEEWX微信开发更便捷,Ngrok 内网穿透利器应用
- Java容器 | 基于源码分析Map集合体系
- Unity插件扩展中组件常用的几个方法
- Fatal error: Allowed memory size of 8388608 bytes exhausted (tried to allocate 359404 bytes) in
- CAReplicatorLayer复制Layer和动画, 实现神奇的效果
- 计算一段代码执行完毕用时问题