这篇博客纯粹是笔记,非技术类探讨,用于记录一下我在使用QMap的时候发现的一个小技巧。

今天设计界面的时候遇到一个现象,就是对于界面上的某些控件(如button)而言,在没有找到对应的数据的时候,需要显示一个默认的值(比如显示“请选择)。
因为采用的容器是QMap,因此在获得某个值之前需要先找一下看看这个数据是否存在在QMap容器中,如果存在就直接将数据拿出展示,如果没有,就显示为默认值。
示例代码如下:

QMap<int, QString> testNamesMap;
......
ui.testBtn->setText(testNamesMap.value(testID));

因为事先没有注意到这一点,因此在容器内找不到这个ID的时候,就会出现按钮显示为空的状态,而不是默认的“请输入”。

针对这个问题,第一反应是加个判断,就是先找找看这个容器里面有没有这个ID,如果没有就手动将显示设置为“请输入”。

但是在我查看手册之后,发现完全可以不这么做,先看一下QMap::value()的函数原型:

const T QMap::value(const Key &key, const T &defaultValue = T()) const

由上述原型可见,value函数还有一个有默认值的第二个参数,这个参数的作用就是在容器内没有查找到指定key值的时候,返回这个默认值
如果填了默认值,就返回默认值,如果没填,就返回value类型的默认构造函数下的默认值(如value如果是QString类型,那么就会返回一个空字符串)。

以下是手册详细解释:

Returns the value associated with the key key.
If the map contains no item with key key, the function returns defaultValue. If no defaultValue is specified, the function returns a default-constructed value. If there are multiple items for key in the map, the value of the most recently inserted one is returned.

因此,上述代码我就可以摒弃掉这个繁杂的判断,直接设置这个默认参数即可,改过之后的代码如下:

QMap<int, QString> testNamesMap;
......
ui.testBtn->setText(testNamesMap.value(testID, "请选择"));

笔记:关于QMap使用时候的一点技巧相关推荐

  1. Android群英传笔记——第四章:ListView使用技巧

    Android群英传笔记--第四章:ListView使用技巧 近期也是比較迷茫.可是有一点点还是要坚持的,就是学习了.近期离职了,今天也是继续温习第四章ListView,也拖了事实上也挺久的了,lis ...

  2. 调试笔记--jlink 变量转实时波形小技巧

    调试笔记–jlink 变量转实时波形小技巧 上篇讲了jlink RTT组件在RAM中开辟一段内存,将printf字符串存入然后通过jlink调试接口读取RAM,将printf字符串在jlink-RTT ...

  3. PyTorch学习笔记(六):PyTorch进阶训练技巧

    PyTorch实战:PyTorch进阶训练技巧 往期学习资料推荐: 1.Pytorch实战笔记_GoAI的博客-CSDN博客 2.Pytorch入门教程_GoAI的博客-CSDN博客 本系列目录: P ...

  4. 神经翻译笔记5扩展b. 常用的机器翻译技巧

    文章目录 神经翻译笔记5扩展b. 常用的机器翻译技巧 组合解码 标签平滑 单语数据应用 重排序 领域适配 参考文献 神经翻译笔记5扩展b. 常用的机器翻译技巧 本节介绍提升机器翻译系统效果的常见手段. ...

  5. 如何优化小红书笔记?教你三个小技巧,让你快速提高笔记排名

    小红书推广的第一步就是发布笔记,笔记排名越靠前,流量就越大,所以做好笔记很重要,下面教你三个小技巧,让你快速提高笔记排名 1.内容优化 笔记内容撰写首先要符合小红书平台规则,原创度高,建议企业从产品卖 ...

  6. 程序员笔记(知识)管理的一点经验

    记笔记这件事,也许在很多人看来,再普通.简单不过了--从小老师就教育我们要这么做.不同的人有不同的方式,我们最终的目的,还是希望不要停留在只是记录这一层面上,而是将它们转变为我们的知识.作为一个程序员 ...

  7. 写笔记插件_Java程序员笔记(知识)管理的一点经验

    记笔记这件事,也许在很多人看来,再普通.简单不过了--从小老师就教育我们要这么做.不同的人有不同的方式,我们最终的目的,还是希望不要停留在只是记录这一层面上,而是将它们转变为我们的知识.作为一个程序员 ...

  8. 开始利用CSDN做学习笔记,从windows 游戏编程大师技巧和3D游戏编程大师开始

    利用两个月的空余时间将windows 游戏编程大师技巧和3D游戏编程大师技巧看了一遍. 第一遍读的并不深入,代码也没有仔细研究.特别是3D下册,基本只是草草浏览了一遍而已.这一遍是为了对整体有个印象和 ...

  9. 数据分析学习笔记(二) 数据分析的思维技巧

    秦路<七周成为数据分析师>学习笔记,供自己学习查看使用,侵删. 目录 象限法 多维法 假设法 指数法 二八法 对比法 漏斗法 象限法 常见用途: 用户分群:用户价值与用户流失度两个维度进行 ...

最新文章

  1. Result Maps collection already contains value for
  2. python入门编程题库-Python随笔30:Python基础编程练习题25~26
  3. pycharm调出参数提示气泡
  4. 解释型语言与编译型语言
  5. 叮!您有一份来自平安人寿的真AI情书
  6. 了解systemctl和chkconfig的服务管理工具
  7. 实战 MDT 2012(六)---基于MAC地址的部署
  8. 07_QueueWithTwoStacks
  9. Apache ServiceComb
  10. 【NOIP2011 Day 2】观光公交
  11. 创造11,你pick哪位讲师?
  12. $_SERVER[HTTP_HOST]和$_SERVER[SERVER_NAME]
  13. iOS开发之三方分享(shareSDK)
  14. c语言读取tdx日线文件,***EXCEL读取通达信股票日线数据***改为读取通达信股票5分钟数据...
  15. C语言中malloc,calloc,realloc,free的语法与作用
  16. 2021-06-22 加水印后原本EXCEL内容被覆盖
  17. NI PXI-6221(16路模拟输入)校准小记
  18. 央视 315 晚会曝光数据泄露
  19. 图神经网络时间序列预测,神经网络预测未来数据
  20. P2P之UDP穿透NAT的原理与实现 - 增强篇(附修改过的源代码)

热门文章

  1. STM32-F407入门学习专题(二) STM32复位和中断
  2. 目标跟踪测试工具OTB使用教程
  3. VM虚拟机中无法使用鼠标滚轮(罗技鼠标)
  4. 【软件工程师学硬件】之 开发板
  5. 张宇1000题概率论与数理统计 第九章 参数估计与假设检验
  6. oracle取时间的小时_ORacle,怎么截取时间字段中的小时
  7. Dash币中PrivateSend 的过程
  8. 深入浅出数据分析 - 启发法
  9. win10系统没有电源高性能选项
  10. Windows脚本编写