本案例对应的源代码目录:src/chapter02/ks02_03。程序运行效果见图2-21。

图2-21 案例3运行效果

既然要进行界面编程,自然离不开图片。如果认为在按钮上使用文字太枯燥了,那么使用图标是不是会更好呢?本节讨论一下如何在Qt项目中使用图片。

既然要用图片,自然离不开图片文件啦。那么图片在哪里找呢?百度!相信是很多人的第一反应。但是,从网上找到的图片在用Qt进行加载时可能会失败(原因待查,未深究),而且可能导致版权问题。所以,从网上找图片的办法不太靠谱。有规模的软件公司一般都会请专业美工来制作图片,而且这样也不会有版权问题啦。

那么把图片(大象)放到项目(冰箱)中一共分几步呢?就像某著名演员说的,一共分3步。

(1)把图片放到images目录(打开冰箱门)。

(2)将图片文件名添加到xxx.qrc文件,并将qrc文件添加到pro(把大象放进去)。

(3)在界面、代码中引用图片(把冰箱门关上)。

下面详细介绍一下开发过程。

1.把图片放到images目录

拿到需要的图片后,把它放到images目录,这个目录是项目的子目录。如果项目的代码目录为ks02_03,那么就在ks02_03目录下面建立子目录images,并将图片放入该目录。

ks02_03目录

--- images(图片子目录)

---源代码1.cpp

---源代码2.cpp

2.将图片文件名添加到xxx.qrc文件,并将qrc文件添加到pro

qrc文件是Qt的资源描述文件,可以把用到的图片在该文件中进行描述。现在看一下qrc文件的格式(见代码清单2-11)。

代码清单2-11

// ks02_03.qrc

<!DOCTYPE RCC>

<RCC version="1.0">

<qresource>

<file>images/logo_text.png</file>                                                ①

</qresource>

</RCC>

代码清单2-11中标号①处的<file>这一行的内容被用来描述项目中用到的图片。如果还有别的图片,可以再写一行,只要把logo_text.png换成对应的文件名即可。另外,请注意使用相对路径:

images/logo_text.png

images是项目的子目录,在images前面无须写其他内容。然后,将ks02_03.qrc添加到项目,只需要在pro文件加一行:

RESOURCES += ks02_03.qrc

3.在界面、代码中引用图片

如果为文本控件(QLabel)设置一个图片,可以在Designer中单击该文本控件并在属性窗中为它设置图片,方法是:修改属性窗中的pixmap属性,并设置成事先准备好的图片。选择图片时,请用编辑框右侧的…按钮。

如果在代码中为QLabel设置图片,可以写成:

ui.label->setPixmap(QPixmap(":/images/qt.png"));

注意:描述图片文件路径时,使用的是“:/images/qt.png”,不要漏掉路径开头的冒号。

最后给应用程序加上控制菜单图标。方法很简单,首先准备一个图标文件my.ico,将其放到images目录。然后,修改pro文件:

RC_ICONS = images/my.ico

OK,把程序构建一下并运行起来吧。

本案例介绍了向项目中添加图片的方法和过程,现在总结一下要点:

(1)需要图片时,尽量请专业美工制作。避免使用网上的图片,因为有些图片可能无法被Qt识别而且可能存在版权问题。

(2)将图片添加到项目一共分三步:

  1. 第一步,将图片放到images子目录。
  2. 第二步,将图片文件名添加到qrc文件并将qrc文件添加到pro。
  3. 第三步,在界面(UI文件)或代码中引用图片。

(3)为项目添加控制菜单图标的方法是在pro文件中设置RC_ICONS配置项。

(4)在代码中描述图片文件路径时,写成:

ui.label->setPixmap(QPixmap(":/images/qt.png"));

《Qt 5/PyQt 5实战指南》目录

2.3 案例3 加点料-增加一张图片相关推荐

  1. 使用soundtouch为音频加点料

    使用soundtouch为音频加点料 作者个人网站链接 jiguangchao.com 为什么要为音频加点料? 为音频加点料就是实现音频的特效,可以实现音频的倍数播放,以及音乐的升降调.响度增加等功能 ...

  2. 通过Filter给Request、Response加点料

    一.简介 使用过 ASP.NET 的同学都知道,Filter 是一个非常中的概念,是项目开发过程中也是经常使用的.今天我们就来讲讲,通过Filter给 Request.Response 加点料.通过 ...

  3. 发布一个实体类属性生成小工具,给开发加点料

    做了很久的代码生成工具,基本上都是基于表生成实体类属性的,把数据库表的信息拿出来,然后之乎者也后生成一个标准的实体类,包含字段.属性.描述等东西. 是基于整个数据库生成整个框架代码的工具,如我的代码生 ...

  4. 【Less】给 CSS 加点料

    [Less]给 CSS 加点料 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 说明 相比Sass的高调宣言,Less就比较低调 ...

  5. 农产品想畅销 需在包装加点料

    ​​产品的包装是品牌与消费者沟通的最直接方式,一款好的包装够吸引消费者,提升销量.传统农产品包装大红大绿是主调,现在随着消费者审美不断提高,农产品包装急需升级. 蓝狮农业品牌营销策划机构贾商认为,在农 ...

  6. 增加数据_PVC行业数据| 累库是趋势,华南海运中旬料增加(1230)

    库存-社会库存 华东华南社会库存库存持续 增加,未来一两个月累库料为趋势.截至12月30日当周为11.52万吨,较12.25当周增加1.33万,较11月底增加5万,较去年1月3日增加2.14万. 截至 ...

  7. 阻塞队列的使用案例-注册成功后增加积分

    假如我们模拟一个场景,就是用户注册的时候,在注册成功以后发放积分.这个场景在一般来说,我们会这么去实现 但是实际上,我们需要考虑两个问题 1. 性能,在注册这个环节里面,假如添加用户需要花费1秒钟,增 ...

  8. 英特尔傲腾,给内存和存储间加点“料”

    你在刷电子产品的时候,想过这些数据是如何存储和处理的吗?在数字时代,存储的核心离不开内存.优质的内存能够提高存储速度和稳定性,让我们享受数字时代的红利.内存是如何运转的,它在存储的世界中是何种地位?本 ...

  9. 9月热文精选,为你的假期加点料

    9月热文精选配你过长假,看看你有没有错过一些精彩的内容! 技术 硬货 | 一文了解深度学习在NLP中的最佳实践经验和技巧 重磅 | 周志华最新论文:首个基于决策树集成的自动编码器,表现优于DNN 笔记 ...

最新文章

  1. Centos 64位使用 yum 会安装两个相同软件包的解决方法
  2. Jmeter中中文乱码
  3. sql数据库相关语句
  4. Android——APK 在32bit/64bit平台 动态库问题
  5. P4550 收集邮票-洛谷luogu
  6. String、StringBuffer比较
  7. BZOJ3139/BZOJ1306 HNOI2013比赛/CQOI2009循环赛(搜索)
  8. 阿里Android p6准备,项目经历准备篇——如何准备阿里巴巴P6/P7前端面试
  9. 关于ajax请求后台获取下拉列表用的数据
  10. eshop5的数据库结构说明
  11. 第三方全网发布 返回Api文本消息解决失败
  12. 完全解析为什么0.1+0.2=0.30000000000000004
  13. .wim .GHO 类型的镜像文件如何恢复系统
  14. 端点科技春招笔试回忆(Java方向)
  15. Opengl加载与创建纹理
  16. 省市县数十万数据集PM2.5面板数据(1998-2020年)
  17. Android 10 设置壁纸流程
  18. react simditor 上传成功修改图片路径
  19. 条码扫描枪的光电器件(一)
  20. Tosyl-PEG-BSA 甲苯磺酸酯-聚乙二醇-牛血清白蛋白的用 途

热门文章

  1. 百度关键词排名怎么提高
  2. BitBlt函数解析
  3. ldap over ssl php,ldapsearch over ssl/tls不起作用
  4. java强制fullgc_触发Full GC执行的情况 以及其它补充信息
  5. LCR表测电容怎么实现连续测试?ATECLOUD云测试平台帮您解决
  6. full gc排查思路
  7. 跨境卖家一定要了解亚马逊红人计划!
  8. alma linux 8.6显示桌面图标
  9. 美图发力社交行业 用户需求驱动社交化转型
  10. c语言strncpy源码,C语言 - strcpy和strncpy的编程实现及总结