[Qt 教程之开始的开始] —— qrc资源文件介绍与使用

2023-10-28

Qt系列教程总目录

Qt工程分组中,除了HeadersSourcesForms外,还有一个文件夹Resources,只有当工程中有图片、音频等资源文件时才会用到。

首先将资源文件存放到工程目录下的文件夹中,然后添加.qrc文件,方法如下:

在工程目录右键–>选择Add New

在这里插入图片描述

选择Qt–>Qt Resource File,然后点击Choose…

在这里插入图片描述

然后可以自定义文件名和路径,点击Next>

在这里插入图片描述

然后可以选择要添加到的工程和使用的版本控制工具,这里默认,然后点击Finish

在这里插入图片描述

然后,工程目录中就会出现Resources目录和res.qrc文件,点击Add Prefix添加前缀

在这里插入图片描述

Qt通过前缀对资源文件分类,如有需要用户可以自定义前缀名称,如不需要分类可以修改前缀为/,然后点击Add Files添加资源文件

在这里插入图片描述

找到工程目录下的资源文件位置,全选导入,再构建一下(点右下角那个小锤子),就可以在Resources目录下看到这些文件了,如下图:

在这里插入图片描述

其中.qrc文件存储的是资源文件的相对路径,.qrc文件格式如下:

<RCC>
    <qresource prefix="/">
        <file>res/742c.png</file>
        <file>res/20220918143827.png</file>
        <file>res/Einstein.png</file>
        <file>res/icon.png</file>
    </qresource>
</RCC>

使用资源文件时输入的路径格式为“:/res/icon.png”,其中:后面是前缀+文件相对路径,比如为按钮添加背景图片:

toolBtn->setIcon(QIcon(":/res/icon.png"));

如果需要对资源文件进行分类,上面点击Add Prefix添加前缀那一步,可以填写自定义的前缀名称,点击一次Add Prefix添加一个前缀(分类),然后把对应的文件添加进去,再构建一下就可以了。

在这里插入图片描述

其中.qrc文件内容如下:

<RCC>
    <qresource prefix="/first">
        <file>res/742c.png</file>
        <file>res/20220918143827.png</file>
    </qresource>
    <qresource prefix="/second">
        <file>res/Einstein.png</file>
        <file>res/icon.png</file>
    </qresource>
</RCC>

这时icon.png文件的路径就变为:/second/res/icon.png了。

小建议

获取文件路径,建议在Resources目录下对应的资源文件上右键,选择Copy Path复制:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

[Qt 教程之开始的开始] —— qrc资源文件介绍与使用 的相关文章

  • 如何将flex和bison与Qt项目集成?

    我正在 git 源代码控制下使用 Qt4 制作 GUI 程序 Github页面 https github com vinayak garg dic sim 项目的一小部分需要扫描和解析 所以我想在项目中使用flex和bison 我能想到3种
  • 在Qt中,如何正确实现委托?

    我遵循模型 视图 控制器范例 我很确定模型和视图是正确的 但我认为我的代表做错了一些事情 一切都 有效 除了第一次单击控件只是 点亮控件 而第二次单击与之交互之外 这是代表通常的实施方式吗 我的实现需要大量的构造和销毁 由scoped pt
  • 如何在Qt3D中优化点云渲染

    我正在尝试使用 Qt3D 显示大型点云 20M pts 我第一次发现这个图书馆https github com MASKOR Qt3DPointcloudRenderer https github com MASKOR Qt3DPointc
  • 在 Windows 上从源代码构建 PhantomJS-2

    我正在尝试基于这些在 Windows 8 1 x64 上从源代码构建 PhantomJS 2 的开发版本指示 https github com ariya phantomjs wiki PhantomJS 2 但是我收到以下错误 mingw
  • 无法将 [未定义] 分配给 QColor

    我正在使用 Qt 5 11 构建 运行代码 代码中有QML风格如下 Button style delegate Component id enabledButtonStyle ButtonStyle padding top 0 paddin
  • C++ QT libXL 错误:“启动期间程序退出,代码为 0xc0000135”

    我正在尝试编写一个使用 libXL 的 QT 应用程序 但是当我尝试编译时 我收到一个弹出框 显示 During Startup program exited with code 0xc0000135 我已经准确地找出了哪一行导致了问题 它
  • 在信号/槽处理期间删除 QObject

    我知道从槽处理中删除 QObject 可能会使应用程序崩溃 因为它可能有其他排队的事件 因此 我将使用 obj gt deleteLater 而不是使用 delete obj 据我所知 obj 等待处理所有排队的事件 然后 删除 obj Q
  • qt 如何知道按钮被点击?

    我正在尝试编写一个程序 用声音进行一些操作 我的问题是我有 3 个播放按钮和 3 个标签 我希望无论我单击 播放 按钮 都应该播放按钮附近标签中名称的声音 我有一个没有任何参数的播放插槽 那么 如何分别连接到每个播放按钮和每个标签呢 实际上
  • Qt 和 MOC 的困境与简单的制作

    我想这更像是一个 GNU Make 问题 而不是 Qt 和 moc 但这里是 我有一个包含多个目录Q OBJECTS 我有一些简单的代码 它收集所有这些 例如 MOCS shell grep l Q OBJECT HEADERS Assum
  • 如何从键盘为 QTableWidget 创建信号?

    我有一张桌子 可以通过左 右 上 下按钮在里面移动 现在 当我停留在某个单元格并按空格键时 我需要创建一个信号 该信号还应该带来该单元格的坐标 我尝试使用 QTableWidget 的标准信号 但它不起作用 我该如何解决这个问题 创建一个单
  • 我如何告诉 QTableWidget 结束编辑单元格?

    我正在显示一个弹出菜单来选择 QTableWidget 中的某些值 最下面的项目是 修改列表 条目 当我选择它时 应自动出现一个新窗口 并且 QComboBox 应消失 并且单元格返回到 Qt DisplayRole 状态 现在 Qt 拥有
  • 如何在Qt中更快地读取数据?

    Qt读取数据库比C 慢吗 我想我错过了一些东西 为了比较阅读速度 我在 Qt 中编写了以下内容 QElapsedTimer t t start int count 0 QString cs Driver SQL Server Server
  • 在 Windows 上静默安装 Qt55 Enterprise

    编辑 在 Qt 支持的帮助下 我已经解决了如何自动化 Qt 企业安装程序的这两个部分 下面是脚本调用 我正在尝试在 Windows 8 1 和 Windows 10 上静默安装 Qt 5 5 1 Enterprise 使用 script 开
  • 使用样式表时的 QTabWidget tabPosition

    我目前正在使用样式表来设计应用程序的主题 这是我用于 QTabWidget 的样式表 QTabBar et QTabWidget QTabBar tab background qlineargradient spread pad x1 0
  • 如何阻止 Qt Creator 将可执行文件放置在“调试”子目录中?

    我正在 Qt Creator 中构建一个项目 虽然我不关心中间 obj 文件去哪里 但重要的是最终的可执行文件应放入 并运行 许多依赖项 DLL 等所在的特定目录中 被发现 因此 在 Qt Creator 中 我选择 Shadow Buil
  • 更改显示的 DPI 缩放大小使 Qt 应用程序的字体大小渲染得更大

    我使用 Qt 创建了一些 GUI 应用程序 我的 GUI 应用程序包含按钮和单选按钮等控件 当我运行应用程序时 按钮内的按钮和字体看起来正常 当我将显示器的 DPI 缩放大小从 100 更改为 150 或 200 时 无论分辨率如何 控件的
  • 如何改善 Qt5 程序的启动时间?

    我最近切换到 Qt5 我注意到与 Qt4 相比 初始化 QApplication 花费的时间明显更长 大约几分钟 仔细一看 程序似乎把时间花在了这里 Qt5Guid dll QGlobalStatic
  • PyQt QFileDialog exec_ 很慢

    我正在使用自定义QFileDialog因为我想选择多个目录 但是exec 功能非常慢 我不明白为什么 我正在使用最新版本的 PyQt 代码片段 from PyQt4 import QtGui QtCore QtNetwork uic cla
  • Qt - 等待 Qprocess 完成

    我正在使用 CMDQProcess但我有一个问题 My code QProcess process process start cmd exe process write del f b txt n r process waitForFin
  • 关于在 Qt 中使用未记录的类

    使用无证文件是否安全QObjectUserData类和QObject setUserData in Qt 相反 你可以看看使用QObject setProperty http doc qt io qt 5 qobject html setP

随机推荐

  • C# 对西门子1200PLC 的优化过的DB块进行符号寻址

    最近一直在学习C 一直想利用C 对西门子的PLC的优化DB块进行数据读取 因为S7通讯只支持绝对地址 这样的话 对PLC端编程很不友好 后来发现atvise这个小软件 发现它能够符号寻址西门子PLC 然后通过OPC转发出去 这样的话 我就在
  • 《现代密码学教程》

    第一章 密码学概论 第二章 密码学基础 第三章 古典密码体制 第四章 分组密码 第五章 序列密码 第六章 Hash密码 第七章 公钥密码体制 第八章 数字密码签名 第九章 密码协议 第十章 密钥管理
  • 对象池的简单应用

    对象池呦 对象池里只有一个预制体 队列对象池 对象池里面有多个预制体 创建和销毁的伪代码 代码 测试功能 做个预制体吧 开始测试 对象池的概念 对象池是个什么东西呢 对象池是用来管理对象的一个池子 当一个物体需要大量的创建和删除时 由于函数
  • 2021年1月,DB-engines数据库排名

    2021年1月份 排行前10的数据库分别为 Oracle MySQL Microsoft SQL Server PostgreSQL MongoDB IBM Db2 Redis Elasticsearch SQLite Cassandra
  • 7.基于STM32C8T6的四旋翼无人机的飞控制作----实践操作2,AD电路板绘制-原理图库绘制

    原理图库和封装库准备 建立对应关系 Altium上绘制电路板有三种库 还有一种是集成库 不予以介绍 原理图库和封装库都可以直接用现成的库直接添加库 也可以完全自己绘制 也可以自己绘制其中一部分 另一部分直接拷贝别的库里面的元件 原理图库sc
  • Java里的包装类型

    Java里的包装类型 其实也就那么几个 基础数据类型 包装类型 和面向过程的编程不同 Java里 一切皆对象 但是就有那么一些例外 就是常见的int char boolean float double byte short long 八大基
  • 【专注力】如何打完游戏后只用15秒就进入学习状态

    教你如何打完游戏后只用15秒就进入学习状态
  • java基础语法

    Java基础语法 注释 单行注释 注释一行 多行注释 注释多行 文档注释 标识符 字母 数字 下划线 数字不能开头 数据类型扩展及面试题讲解 整数 二进制 0b开头 八进制 十进制 十六进制表示及计算问题 如 int a 10 十进制 10
  • Linux其实也是时间管理大师——掌握crontab

    引言 欸乃一声山水绿 回看天际下中流 岩上无心云相逐 勿埋我心 做网站的哥们都有一个共同的习惯 那就备份网站的数据 现在宝塔自带的备份也还可以 但是如果自己想要定时运行自定义脚本呢 那就需要用到Linux的时间管理大师了 crontab L
  • eigen常用操作

    基本操作 Eigen Matrix
  • TCP/IP协议栈模型分析

    一 TCP IP协议 标准TCP IP协议是用于计算机通信的一组协议 通常被称为TCP IP协议栈 以它为基础组建的互联网是目前国际上规模最大的计算机网络 正因为互联网的广泛应用 使得TCP IP成为了事实上的网络标准 TCP IP传输协议
  • 大数据——Java 知识点整理

    1 JDK 和 JRE 有什么区别 JDK Java Development Kit 的简称 java开发工具包 提供了java的开发环境和运行环境 JRE Java Runtime Environment 的简称 java运行环境 为ja
  • Java是未来的第一编程语言吗?

    点击上方 程序员小乐 关注 星标或置顶一起成长 每天凌晨00点00分 第一时间与你相约 每日英文 Thinking too much of others makes you nothing in their eyes 把别人看得太重 结果在
  • OpenLayers标记地图点及点击地图点显示自定义弹出框

    css代码 设置弹出框样式 设置弹出框样式 ol popup position absolute background color eeeeee webkit filter drop shadow 0 1px 4px rgba 0 0 0
  • 华为OD机试 Python 【符合要求的元组的个数】

    题目 你有一个整数列表和一个目标数字 你的任务是找出这个列表里有多少种方式 组合 使得其中的k个数字加起来等于那个目标数字 列表中的数字个数介于2到200之间 列表中的每个数字和目标数字都在 109到109之间 k的值介于2到100之间 举
  • CentOS7 NodeJS源码安装

    CentOS 版本 root localhost test cat etc redhat release CentOS Linux release 7 5 1804 Core 下载NodeJS源码 root localhost test w
  • VS2013 配置CUDA

    一 环境 Windows10家庭版 64位 Virtual Stadio 2013 CUDA 8 0 二 工程建立 1 打开vs2013并创建一个空win32程序 创建一个cuda samples的解决方案和cuda test1项目 2 右
  • 天线工作原理以及如何计算天线长度

    一 题记 人们的生活离不开手机 手机离不开无线通信 在家我们可以连接路由器 在外我们可以连接基站 不可否认的是我们的手机都是通过无线电波与路由器或者基站的天线相连接 见过很多天线 有室外的 有室内的 有长的 有方的 还有圆的 天线的各种形状
  • 【js】js 中{},[]中括号,大括号使用详解

    大括号 表示定义一个对象 大部分情况下要有成对的属性和值 或是函数 一 大括号 表示定义一个对象 大部分情况下要有成对的属性和值 或是函数 如 var LangShen Name Langshen AGE 28 上面声明了一个名为 Lang
  • [Qt 教程之开始的开始] —— qrc资源文件介绍与使用

    Qt系列教程总目录 Qt工程分组中 除了Headers Sources Forms外 还有一个文件夹Resources 只有当工程中有图片 音频等资源文件时才会用到 首先将资源文件存放到工程目录下的文件夹中 然后添加 qrc文件 方法如下