当前位置: 首页 > article >正文

【Qt】在 Qt Creator 中使用图片资源方法(含素材网站推荐)

先准备图片资源

推荐一个好用的图标素材网站,有很多免费资源。

Ic, fluent, animal, dog, filled icon - Free download

其他辅助工具,类似 AI 抠图去背景,实测效果还行,但是非免费。

美图秀秀-在线一键抠图,无需PS和下载,3秒快速出图

在Qt Creator 左上角点击 File,选择 New File,找到新建资源文件 qrc

在这里插入图片描述

文件名随便起,后缀是 qrc,建议在工程目录下新建一个文件夹来保存所有资源文件,如图片、qss样式表等。

在这里插入图片描述

新建完成后,将 qrc 文件相对工程目录的路径填入 CMakeList。注意此步骤不可少!qrc 文件需要编译后才能使用,类似包含 Q_OBJECT 的头文件,都需要经过 Qt 编译器的处理。

在这里插入图片描述

有兴趣的可以了解下具体原理:

在 Qt 中,rccmocuic 是三个用于处理 Qt 项目中不同类型文件的工具。它们分别处理 Qt 的资源文件、元对象编译和用户界面文件。

1. rcc (Qt Resource Compiler)

作用: rcc 用于处理 Qt 的资源文件(.qrc 文件)。这些资源文件允许你将图片、图标、音频文件等嵌入到程序中,而不必将它们单独作为外部文件分发。

  • 输入: .qrc 文件(Qt Resource 文件)。
  • 输出: 生成一个 C++ 源文件,通常是 qrc_<filename>.cpp,该文件包含了资源的二进制数据,并且可以被包含进程序中,供运行时使用。

使用:

rcc resources.qrc -o qrc_resources.cpp

这会将 resources.qrc 文件编译成 C++ 源文件 qrc_resources.cpp,并将资源内容编译到程序中。

2. moc (Meta-Object Compiler)

作用: moc 是 Qt 的元对象编译器,用于处理 Qt 的信号和槽机制(Signal & Slot)。它扫描 C++ 头文件中的类定义,检查这些类是否使用了 Qt 特有的功能(如 Q_OBJECT 宏)。如果是,moc 会自动生成一些额外的代码,以支持 Qt 的元对象系统(比如动态信号槽连接、反射等)。

  • 输入: 包含 Q_OBJECT 宏的 C++ 头文件(.h)。
  • 输出: 生成一个 C++ 源文件(通常是 moc_<classname>.cpp),它包含了信号和槽的实现。

使用:

moc MyClass.h -o moc_MyClass.cpp

这会生成一个名为 moc_MyClass.cpp 的文件,其中包含了 Qt 元对象系统的代码,用来支持信号与槽的功能。

3. uic (User Interface Compiler)

作用: uic 用于处理 Qt 的用户界面文件(.ui 文件)。.ui 文件是 Qt Designer 生成的 XML 文件,定义了程序的 GUI(图形用户界面)布局。uic 将这些 XML 文件转换成 C++ 代码,生成用户界面类的实现代码,通常是 ui_<classname>.h 文件。

  • 输入: .ui 文件(Qt Designer 生成的用户界面文件)。
  • 输出: 生成一个 C++ 头文件(通常是 ui_<classname>.h),该文件包含了用户界面的布局和控件的定义。

使用:

uic myform.ui -o ui_myform.h

这会将 myform.ui 文件转换成 C++ 头文件 ui_myform.h,它包含了用户界面的所有控件和布局信息,可以在代码中使用。


总结:

  • rcc: 处理 .qrc 资源文件,将资源嵌入到程序中。
  • moc: 处理 C++ 头文件,支持 Qt 的信号和槽机制。
  • uic: 处理 .ui 用户界面文件,将 XML 格式的界面转换为 C++ 代码。

这些工具在 Qt 项目的构建过程中自动运行(通常通过 CMake 或 QMake 构建系统),确保资源、信号槽和界面能够正确地集成到最终的应用程序中。

保存 CMakeList.txt 文件后,重新构建项目,在左侧可以看见新出现的 qrc 文件

在这里插入图片描述

右键该文件,选择 Open in Editor,然后添加一个 Prefix,在Prefix 下添加资源文件,点击 Add Files 选择网站上下载的图片,推荐使用 icon。

在这里插入图片描述

然后选择某一个图片资源,右键点击拷贝资源路径到剪贴板,就可以在样式表中使用了。


http://www.kler.cn/a/393861.html

相关文章:

  • #include<string>和#include<string.h>有什么区别
  • HAproxy 详解
  • sql server 查看io资源使用
  • 深入解析 OpenHarmony 构建系统-4-OHOSLoader类
  • ubuntu20.04安装FLIR灰点相机BFS-PGE-16S2C-CS的ROS驱动
  • 【前端】Vue中如何避免出现内存泄漏
  • 实现API接口的自动化
  • PostgreSQL 开启密码验证插件
  • Spring-Webflux + Reactor + Netty 初体验
  • LeetCode【0017】电话号码的字母组合
  • Docker 基础命令介绍和常见报错解决
  • scala 迭代更新
  • Spring框架之适配器模式 (Adapter Pattern)
  • 江苏博才众创科技产业园集团拟投资10亿元在泰兴打造汽车零部件产业园
  • c#程序结构
  • 探索 HTTP 请求方法:GET、POST、PUT、DELETE 等的用法详解
  • 低代码、配置式web组态软件
  • Nop平台的定位及发展规划
  • 如何通过AB测试找到最适合的Yandex广告内容
  • 【IC每日一题:IC验证面试_UVM-1】
  • 渐进式JavaScript框架Vue 3 入门
  • 【Linux】内核参数修改
  • 洞察鸿蒙生态,把握开发新机遇
  • kafka生产经验——消费者事务
  • 使用 WebWorker 和 Rust WebAssembly 构建的生命游戏
  • LeetCode【0028】找出字符串中第一个匹配项的下标