Qt之QMap基本用法

2023-11-17

  QMap<Key, T>是Qt的通用容器类之一。它存储(键、值)对,并提供与键相关联的值的快速查找。

  QMap和QHash提供了非常相似的功能,他们的差异是:

  • QHash提供了比QMap更快的查找速度。(详情请参阅算法复杂性。)
  • 在QHash上迭代时,项目的顺序是任意的。而使用QMap时,项总是按键排序。
  • QHash的键类型必须提供operator==()和全局QHash(key)函数。QMap的键类型必须提供操作符<(),以指定全序顺序。从Qt5.8.1版本开始,使用指针类型作为键也是安全的,即使底层操作符<()没有提供全序关系。

    (以上来自Qt帮助文档)

需要包含头文件:

#include <QMap>

QMap中插入(键、值)对

QMap<QString, int> map;
map["LiMing"]= 14;
map.insert("BaiMing", 12);

map.insert("LiMuu", 20);
map.insert("LiMuu",100);

  可以用两种方式插入。这里注意,往同样的键中重复写值时,新的值会将旧的值替代,LiMuu此时的值为100。如果想重复写同样的键,可以使用insertMulti()函数。例如:

map.insert("LiMuu", 20);
map.insertMulti("LiMuu",100);

检索键对应的所有值

QList<int> values = map.values("LiMuu");
for (int i = 0; i < values.size(); i++)
      qDebug()<<values.at(i);

  使用函数values()获取一个键对应的所有值,这个函数返回QList类模板。

获取值

QMap<QString, int> map;
map.insert("LiMuu", 20);
int num=0;
num= map.value("LiMuu");
num= map["LiMuu"];

  可以用两种方式获取键对应的值。

循环获取值

foreach (int value, map)
    {
        qDebug()<<value;
    }

查询包含某项

qDebug()<<map.contains("LiMuu");

  用contains()函数可以查询QMap对象中是否包含某一项,如果存在返回true,否则返回false。





点亮在看,扫码关注我吧

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

Qt之QMap基本用法 的相关文章

  • 在 QtCreator 中使用 .pro 和 .pri 正确(树)显示 Qt 项目

    是否可以使用项目包含文件 pri 显示不止一个额外级别 例如如果 pro文件包括 pri文件包含两个 pri files pro pri pri pri 在 QtCreator 项目 中显示具有误导性 pro pri pri pri 它根本
  • QMutex 是否需要是静态的,以便此类实例的其他线程调用知道暂停其操作?

    从多个线程调用以下附加函数 我不希望数据重写附加 因为计数器尚未增加 除了当前使用 Append 的线程之外 这是否会挂起所有进入的线程 或者其他线程会继续运行而不追加数据吗 互斥锁是否需要是 静态 的 或者每个实例都知道要暂停操作吗 如果
  • 如何在 OS X 上的 Qt 应用程序中设置应用程序图标,足以进行分发?

    跟进这个答案 https stackoverflow com a 20918932 368896 to 这个问题 https stackoverflow com questions 20909341 what is the fastest
  • QT:删除QGridLayout中QLabel之间的空格

    我将一些具有不同颜色的 QLabels 添加到 QGridLayout 作为 QWidget 的布局 现在我在每个 Qlabel 与下一个 Qlabel 之间有一个间距 我想将其删除 我尝试将标签的边距设置为 0 将 GridLayout
  • 获取 QListView 中所有可见项目的简单方法

    我正在尝试使用 Qt Framework 开发一个图像库应用程序 应用程序从所选文件夹加载所有图像 并使用 QListView 控件显示这些图像 但现在我想通过仅加载用户可见的图像来减少内存消耗 由于没有直接函数来获取视图中的所有可见项目
  • 如何在QT上暂停和重新启动Qtimer

    我有 Ubuntu 我正在使用 IDEQT on C 我将暂停和恢复计时器 例如 void Ordonnancer les taches on pushButton clicked connect dataTimer SIGNAL time
  • 完全彻底卸载QT Creator

    问题 如何从 Linux 机器上卸载 QT Creator 我的 Debian Jessie 机器上的安装已损坏 我尝试过重新安装 修复等 但没有成功 建议我完全卸载 获取最新版本并重新安装 问题是我不确定如何执行此操作 每次我尝试时 QT
  • QML 中可重用的字体属性[重复]

    这个问题在这里已经有答案了 在 QML 中 我希望能够定义一组字体属性以进行简单的语义重用 例如 代替 Text text This is a header font family Encode Sans weight Font Black
  • Mac OS X 上的 Qt 字体系列和样式

    我有一个基于 Qt PyQt 的 GUI 应用程序 在 Mac OS X 和其他平台 上运行 它允许用户选择字体并具有粗体和斜体选项的复选框 在更新到新的基于 Cocoa 的 Qt 时 用户发现QFontComboBox不再显示不同的字体样
  • 连接到 QNetworkReply::error 信号

    我正在使用 Qt5 的新连接语法 QNetworkReply 有一个名为error http qt project org doc qt 5 0 qtnetwork qnetworkreply html error 2还有一个函数叫做err
  • PyQt4 信号和槽

    我正在使用 PyQt4 编写我的第一个 Python 应用程序 我有一个 MainWindow 和一个 Dialog 类 它是 MainWindow 类的一部分 self loginDialog LoginDialog 我使用插槽和信号 这
  • 无法运行 Qt 应用程序:找不到版本“Qt_5”

    我运行 Ubuntu 16 04 LTS 我的问题是我无法运行可以编译的 Qt5 应用程序 这是我尝试运行它时得到的结果 home user Desktop sconfig dist Release GNU Linux SCongif us
  • 使用 QGraphicsScene 实现流畅的动画

    我希望我的问题并不总是同样的问题 我有一个 QGraphicsScene 它的项目是一些 QGraphicsPixmap 我用一个计时器来移动它们 每秒 SetX 10 我设置 10是因为窗口大100 使用这个解决方案我的动画不流畅 我想我
  • 即使我在单独的线程中运行,QT GUI 也会冻结

    我有一个小型聊天应用程序 其中使用 SQLite 数据库来存储所有对话 我注意到该应用程序随机冻结 然后我必须最小化和最大化它才能使其再次工作 我认为问题可能是 SQLite 选择 插入导致 gui 冻结 我决定尝试将所有 SQLite 方
  • Qt 支持 Windows 蓝牙 API 吗?

    谁能告诉我 Qt 是否支持 Windows 蓝牙 API 如果是这样 您能否分享一些有关如何使用它的信息 自上次答复以来 这个问题的答案发生了一些变化 Qt 5 2 版为 Linux BlueZ 和 BlackBerry 设备实现了蓝牙 A
  • CMake AUTOMOC,文件位于不同文件夹中

    我有一个简单的 CMake 项目 proj project folder a h a cpp CMakeLists txt CMakeLists txt cmake minimum required VERSION 3 2 set CMAK
  • 一个具有完全透明背景的qt小部件

    我需要创建一个 qt 小部件 它将充当其他一些小部件的父级 并对它们进行排序 现在的问题是如何使其背景完全透明 我想这样做 struct Imp Imp QWidget parent thisWidget new QWidget paren
  • QWebEngineView 在 load() 或 page() 方法上崩溃

    我正在致力于将 Qt 5 5 QWebView 项目移植到 Qt 5 6 测试版 QWebEngine 我已经阅读了移植指南here https wiki qt io Porting from QtWebKit to QtWebEngine
  • Qt - ubuntu中的串口名称

    我在 Ubuntu 上查找串行端口名称时遇到问题 如您所知 为了在 Windows 上读取串口 我们可以使用以下代码 serial gt setPortName com3 但是当我在 Ubuntu 上编译这段代码时 我无法使用这段代码 se
  • 如何在不声明 32 个插槽的情况下将 32 个按钮的 pressed() 信号连接到单个函数?

    我有一个小部件 里面有 32 个按钮 我需要将每个按钮的 Pressed 信号连接到一个插槽 以便调用一个函数 该函数的参数取决于我按下的按钮 现在我通过以 on QPushButtonName pressed 的形式添加 32 个插槽来做

随机推荐

  • 【机器学习】—各类梯度下降算法 简要介绍

    阅读之前看这里 博主是一名正在学习数据类知识的学生 在每个领域我们都应当是学生的心态 也不应该拥有身份标签来限制自己学习的范围 所以博客记录的是在学习过程中一些总结 也希望和大家一起进步 在记录之时 未免存在很多疏漏和不全 如有问题 还请私
  • 考研教训分享

    考研教训分享 大家好 今天分享一篇考研教训 这不是经验帖 这只是一篇避坑指南 记录了我考研期间所走的所有弯路 希望可以帮助到在这条路上奋斗的你 我是某双非的工科考生 所以这篇文章更偏向于考数学的研友 2月中旬备考 复习前感觉自己之前大学学过
  • 你的朋友可能还在为毕设烦恼,而你已经有了这113个Java计算机毕业设计项目

    站在计算机专业毕业设计的门槛上 你是否为选题和项目规划而烦恼 今天 我们将为即将毕业的同学们展示多个毕业设计项目 期待能为正在为毕业设计抓狂的同学们提供一些帮助 一 成品列表 以下所有springboot框架项目的源码博主已经打包好上传到百
  • Mac用户入门的13个基础终端命令

    终端是用户在Mac电脑中经常使用的应用程序 也是非常好用的Mac应用 终端应用之所以受欢迎是因为 它可以直接执行用户给出的命令 从而完成其他程序无法完成的操作 更改目录 cd 示例用法 cd folder 使用cd命令更改目录 例如 cd
  • vue进阶——整合富文本编辑器wangEditor

    vue进阶 整合富文本编辑器wangEditor 前言 一 什么是wangEditor 二 安装wangEditor 1 React 2 Vue2 3 Vue3 4 CDN 三 基本使用 1 vue2 2 vue3 四 文件上传问题 1 前
  • kdj指标主要看哪个值_KDJ指标的最全面攻略文章,散户学会后看指标不再迷茫,超赞...

    本文由公众号越声投研 yslcwh 整理 仅供参考 不构成操作建议 如自行操作 注意仓位控制和风险自负 我们步入了信息时代 知识已经是我们人类生存和生产当中最为重要的因素之一 而如今 在求知欲的趋势下 我们消费者也甘为知识而花费解囊 智慧经
  • 关于set_output_delay与set_input_delay概念与用法

    一 这两条约束语句都是针对板级延时而言的 语句中必须的有是 时钟与port 二 set input delay 用于数据输入端口 调节数据输入与时钟输入到来的相位关系 当FPGA外部送入FPGA内部寄存器数据时 会有两个时钟launch c
  • 被迫学习一波Linux命令

    事情起因 部署一个服务 人家说了最低配置是3G 我没当回事 拿着个2G的服务器直接就上了 结果 哈哈 都能猜到结果 服务器内存爆了 而且最可气的是服务器还登不进去 重启之后内马上又被拉满了 根本连接进不去 算是一次小小的事故 记录是为了不再
  • msvcp110.dll丢失原因——msvcp110.dll丢失怎么修复(最新可修复)

    昨天卸载了一个垃圾软件以后 我的其他软件就无法打开运行 提示msvcp110 dll丢失 无法继续执行此代码 今天早上找了很多方法 终于把msvcp110 dll丢失的原因以及修复的方法都弄明白了 msvcp110 dll是一个非常重要的文
  • 26功能之VS2013静态库的制作与使用

    26功能之VS2013静态库的制作与使用 一 制作静态库 1 新建项目 选择Win32项目 2 先选择空项目 静态库 若先选择静态库 空项目按钮无法被选中 这点需要注意 3 可以看到此时是没有其它 h和 cpp文件 有时VS13或者15即使
  • 天拓分享

    1 组态王和多台西门子 S7 300 400PLC 通过 dp 协议通讯时 设备地址应如何定义 1 硬件连接 计算机中插入一块 CP5611 或 CP5613 可实现将多个 S7 300 400PLC连接在一条 DP 总线上 2 DP 协议
  • 读取问题:UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd0 in position 0: invalid continuation

    关于读取CSV文件错误问题 1 新建CSV的文件 问题描述 新建xls工作表之后直接修改文件扩展名为csv 然后读取csv文件时出现如题错误 data pd read csv E csv 尝试了以下改进方法仍然错误 达咩达咩 不过大家有类似
  • 基础巩固

    写在前面 本文主要是自己用来巩固C 基础用的 内容源自我的一位同学rzj的八股总结 内容很多 后面会加上目录之类的 方便查找 如果有错误 欢迎及时在评论区或私信指出 1 1 1 简述下C 语言的特点 C 在C语言基础上引入了面对对象的机制
  • linux中vim试题,测试开发面试的Linux面试题总结之一:vim使用方法

    原标题 测试开发面试的Linux面试题总结之一 vim使用方法 编写测试脚本 查看日志 查看配置文件 少不了要和vim打交道 vim是unix linux下的文本编辑器 它一般有两个模式 命令模式和编辑模式 通过ESC来切换到命令模式 其常
  • bitcoinj开发环境搭建

    bitcoinj开发包是一个Java版本的比特币协议实现 使用bitcoinj就可以实现钱包管理和交易的发送与接收 而无须本地安装bitcoin core软件 本文将介绍bitcoinj开发环境的搭建方法 虽然bitcoinj有完备的文档
  • Brownie 开发智能合约(入门使用)

    简介 上篇文章 使用了 Remix 在线 IDE 个人感觉 Remix 在入门智能合约开发时 是很好的上手工具 因为 Remix 帮我们处理好了编译 部署的过程 并且还通过 JavaScript VM 准备好了本地区块链方便我们测试 可谓开
  • 华为od机试 Java 【切割字符串】

    题目 给定一个由小写字母组成的字符串 请找出两个位置 将字符串分为三部分 这三部分的总和应该是相同的 其中每部分的总和是其字符的ASCII码值的总和 注意 这两个位置的字符不包括在这三部分内 如果你找到了这两个位置 请输出它们的位置 如果没
  • 2 关系型数据库是什么?

    目录结构 关系型数据库基本概念 结构化查询语言 数据定义语言 DDL 数据查询语言 Data Query Language DQL 数据操纵语言 Data Manipulation Language DML 数据控制语言 Data Cont
  • Ubuntu 20.04配置FTP服务方法(非匿名登录)

    一共找了三篇比较好的搭建步骤文章 仅供参考 转载一 https blog csdn net J StrawHat article details 110384202 utm medium distribute pc relevant non
  • Qt之QMap基本用法

    QMap