为了更加形象地展示UI中某些控件的作用,通常会给控件添加ico/png等图片文件,但如果直接从文件中加载,那么生成的exe也会依赖加载的文件路径,如果路径下没有图片,exe上的对应的控件便不会显示。
一种可行的解决方法是,将图片直接放入代码中,因为图片的本质是二进制字节码,可以将图片作为二进制码解析出来,然后放入代码中作为一个大数组,大数组便会被编译到exe中,不会依赖外部的图片文件。自己再写一个图片文件的读取解析工具比较麻烦,而且容易出错。幸运的是,QT已经有这种解决方法的实际实现了,这种方法就是qrc文件。

qrc文件的使用

qrc文件中可以加载ico、png等图片,将qrc加入VS解决方案中,VS在运行时,便会将qrc文件中的图片编译到qrc_xxx.cpp中,qrc_xxx.cpp中会有一个大的数组,用于存储qrc文件中加载的图片生成的二进制码。
编译运行时,是以main.cpp所在路径为当前路径,因此qrc文件应当与main.cpp放置于同一文件夹,在代码中以相对路径加载图片时,通常是以如下形式:

 QIcon icon;icon.addFile(QStringLiteral("./Resources/Icon/Stop.png"), QSize(), QIcon::Normal, QIcon::Off);ui.m_pTbtnRefreshFrame->setIcon(icon);

将"./Resources/Icon/Stop.png"加入qrc文件后,只需要将上述代码更改为

 QIcon icon;icon.addFile(QStringLiteral(":/Resources/Icon/Stop.png"), QSize(), QIcon::Normal, QIcon::Off);ui.m_pTbtnRefreshFrame->setIcon(icon);

将当前路径中".“改为”:",QT便会加载qrc_xxx.cpp中的数组。

qrc文件使用时应当注意的问题

qrc应与main.cpp放置于同一文件夹,否则可能会出现加载图片失败的情况,例如,假设qrc文件位于main.cpp所在文件夹的字目录UI下,加载的图片位于Resources/Icon/Stop.png,自动生成的ui_xxxx.h代码,加载图片的路径可能变为"../Resources/Icon/Stop.png",从而导致图片加载失败。

在QT界面中使用ico/png等图片文件,生成exe后不依赖外部文件相关推荐

  1. Matplotlib画图教程:在QT界面中嵌入三维图片

    Matplotlib画图教程:在QT界面中嵌入三维图片 需求: 做项目报告的时候,有这么一个想法,就是能通过UI随时调用matplotlib进行二维图和三维图的绘制.因此就诞生了做这么一个小模块的想法 ...

  2. QT界面中实现视频帧显示的多种方法及应用

    QT界面中实现视频帧显示的多种方法及应用 (一) 引言 1.1 视频帧在QT界面中的应用场景 1.2 不同方法的性能和适用性分析 1.2.1 使用QLabel和QPixmap 1.2.2 使用QPai ...

  3. python tkinter编写界面,使用win32com操作excel获取数据生成截图后,wxpy登录微信,给租客发送房租(一)

    家里有几个单间出租,可是每到月头收房租就是件麻烦事,挨个挨个去收,对方有时候不在,或者说还没出粮,过几天再给,又或者没到时间,太麻烦了,而且还得写收据,学了python这么久,自己来写个GUI,用ex ...

  4. Qt界面中的status bar

    在mainwindow.cpp文件中,有槽函数定义:MainWindow::on_connectButton_clicked(). 其中对于状态栏的操作有: statusBar()->clear ...

  5. 在Qt界面中显示OpenCV图像

    OpenCV中的图像主要存储在Mat类中,要让其显示在Qt的Label控件上,必须先将其转换为Qt的QImage类. Mat类图像是按照BGR顺序存储的图像,而QImage是按照RGB顺序存储的,在类 ...

  6. Qt界面中如何嵌入网页?

    原文链接:https://www.fearlazy.com/index.php/post/326.html 环境:Qt5.9 + vs2017 最简单的嵌入网页只需要QWebEngineView,QW ...

  7. QT界面中再添加界面窗口

    目录 使用场景: 教程: 1.首先创建一个qt设计师界面类 2.现在你有界面了,但是没有创建 3.创建了界面,但是没有容纳该界面的地方,这个时候就要选择容纳的界面, 4.创建完成控件以后开始添加界面, ...

  8. qt界面中禁用某个控件的鼠标滑轮事件

    主要思想就是:当进入滑轮的滚动事件的时候,就禁用该控件,而进入鼠标点击事件的时候,就将这个控件进行激活 如:spinBox控件,鼠标的过滤事件可以参考博客:https://blog.csdn.net/ ...

  9. python tkinter编写界面,使用win32com操作excel获取数据生成截图后,wxpy登录微信,给租客发送房租(三)

    tkinter界面: 这部分很大坨,不过跟上部分一样,代码里备注得很完整了,慢慢消化就能看得懂了!! 操作步骤: 运行程序后, 1.先点击"获取房租信息"按钮,所有租客该月的房租信 ...

  10. Linux主目录中创建目录,linux创建账户并自动生成主目录和主目录下的文件

    Android简单介绍SharedPreference,内部文件,sdcard数据存储 SharedPreference 以xml的结构储存简单的数据,储存在data/data/程序包名/shared ...

最新文章

  1. .net平台性能很不错的轻型ORM类Dapper(转)
  2. 多进程的一些注意事项
  3. linux学习笔记十(Raid基本知识)
  4. div+css+theme
  5. 【深入Java虚拟机JVM 05】HotSpot对象探秘
  6. 数据库:MySQL高频面试题,大厂必备!
  7. Jquery调用ajax参数说明
  8. ftk学习记(对话框篇)
  9. Android 仿360桌面小人
  10. xcode 重新来过openssl项目历程
  11. nmea怎么转wgs84坐标c语言源码,NMEA-0813数据格式说明
  12. 绘制电气电路中的电阻——Visio制图总结【电控类】(二)
  13. USB协议分析方法,工具推荐
  14. 【Web漏洞探索】跨站请求伪造漏洞
  15. 稳定排序与不稳定排序
  16. 部署企业级项目管理系统(蝉道)
  17. 陀螺仪-加速计-磁力计
  18. 重学java——倒叙遍历
  19. 【时间函数】gettimeofday
  20. linux下的arp命令详解

热门文章

  1. 图森未来高层动荡:CEO侯晓迪被突然免职 公开喊冤
  2. 算法之显著性检测《Saliency Detection: A Spectral Residual A》
  3. Sumifs函数多条件求和的9个实例
  4. Excel不用知道sumifs函数也可以多条件求和
  5. 阿里云企业邮箱的imap和pop3设置
  6. linux-mount-iso
  7. 指纹识别属于计算机技术,指纹识别技术属于人工智能吗 指纹识别技术什么时候发明的-与非网...
  8. word如何去除某一页的页眉
  9. 如何让计算机断开网络连接网络设置,电脑怎样设置定时断网,教您怎么设置
  10. 一批信息查询网站汇总