3.1.5.Qt容器大家族(1):QList——最常用的顺序容器 1.前续故事好久不见啦我也是期末考试和GESP6级考完了暑假来啦这会可真是旗开得胜呢Qt魔法之旅的暑假篇即将开启接下来你们将会遇见更多的Qt朋友们再次见识Qt的厉害废话不多说直接进入正题。2.内容介绍上节课我们讲解了QDate、QTime和QDateTime这三剑客他们能存储时间和日历。而从这节课开始我们要学习好几个能容器类他们是我们Qt开发中最基础的几个类你们是不是迫不及待了呢那就快点开始吧3.什么是容器简单来说呢顾名思义容器就是用来存储数据的类就像是我们平常的箱子、水杯这样的。而C标准库中就有STL库比如vector、set等他们就是C标准库的容器。而Qt呢它其实也有一套容器类而且和C标准库很相似。今天我们就先来讲QList。4.讲解QListQList嘛它是Qt容器类中最简单、最常用的一个它和标准库中的vector很类似也是用来存储一个动态列表的随机访问速度快。它的创建方式和vector差不多也是QList类型这样定义的。//创建一个int类型的列表 QListint l;那么我们该如何在列表中添加元素呢这里有两种方法第一种是用append函数来在列表末尾添加元素或者是用prepend函数来在列表开头添加元素。第二种使用QList重载的运算符来添加用重载运算符可以一次性添加好几个元素。//第一种函数 l.append(1); //在末尾添加1 l.prepend(2); //在开头添加2 //第二种重载运算符 l 1 2 3 4 5; //一次性添加完1、2、3、4、5或者如果我们要直接初始化这个列表可以直接用大括号来赋值非常方便。只在末尾添加、开头添加肯定不够肯定还要插入。这时我们就要用insert函数它有两个参数第一个是要插入的下标第二个是要插入的数。l.insert(2, 50);QListint l {1, 2, 3, 4, 5};既然有了添加元素那么肯定要有删除元素、访问元素。接下来我就来讲解如何删除元素。删除元素的函数有很多首先就是我们最常见的removeAt函数里面传的是一个下标表示要删除的元素的下标。还有如果我们就只想删除最前面的或者最后面的就可以用removeFirst和removeLast来删除第一个和结尾的元素。l.removeAt(2); //删除下标为2的元素 l.removeFirst(); //删除第一个 l.removeLast(); //删除最后一个那我们要如何删除一个匹配的值呢这时我们就可以用removeOne这个函数会删除第一个匹配的值。还有removeAll可以删除所有匹配的值。l.removeOne(1); //删除第一个1 l.removeAll(2); //删除所有的2如果要清空整个数组那么用clear函数就搞定了不用任何参数。最后就是查询了。如何知道这个列表的长度那就用size函数。怎么判断列表是否是空荡荡的呢用isEmpty就能判断。qDebug() l.size(); //输出列表长度 qDebug() l.isEmpty(); //输出是否为空我们要如何访问第几个下标的元素是多少呢最简单的方法就是用中括号里面填写下标和普通数组、vector是一样的。还有一种方法就是at函数at函数更安全出现越界访问时会抛出异常让你知道异常之处在哪里。int a l[2]; //中括号访问下标为2的元素 int b l.at(2); //更安全的访问方法当然这里也有first和last能返回第一个元素和最后一个元素。还有一个很实用的操作——查找。用indexOf可以知道一个元素第一次出现的下标。contains函数可以判断一个元素是否存在。qDebug() l.indexOf(3); //输出3第一次出现的位置 qDebug() l.contains(5); //输出5是否存在最后如果你想遍历整个列表可以用三种方式第一种就是普通的下标访问第二种是用C11的范围for更简洁最后一种就是迭代器迭代器是一个指针所以要解引用。我们最常用的就是第二种最方便。// 方式一下标遍历 for (int i 0; i l.size(); i) qDebug() l[i]; // 方式二范围for推荐最简洁 for (int val : l) qDebug() val; // 方式三迭代器 for (auto it l.begin(); it ! l.end(); it) qDebug() *it;好了QList的基本操作就讲到这里。我们下节课再见拜拜

相关新闻

最新新闻

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现

SerenityOS 命令行选项解析指南:getopt 与 getopt_long 用法、返回值与底层实现 【免费下载链接】serenity The Serenity Operating System 🐞 项目地址: https://gitcode.com/GitHub_Trending/se/serenity 导读 本文以 getopt(3) 手册 为核心&a…

2026/10/1 19:32:24
轻量服务器还是ECS?大促云服务器选购与避坑实战指南

轻量服务器还是ECS?大促云服务器选购与避坑实战指南

每年大促节点,群里永远有人在问同一个问题:“38元的轻量服务器到底怎么抢?为什么我每次点进去都是已售罄?68元直购和99元的ECS我到底选哪个?”作为一个常年帮团队和自己采购云服务器的老用户,我太清楚这种纠…

2026/9/30 21:32:07
为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南

为 AI 代理的 Review 动作编写 Cedar 审批门控策略:review-agent-governance 策略编写实战指南 【免费下载链接】agents Multi-harness agentic plugin marketplace for Claude Code, Codex, Cursor, OpenCode, GitHub Copilot, and Google Antigravity 项目地址:…

2026/9/30 19:41:56
PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署

PaddleOCR 手写数学公式识别算法 CAN 实战指南:Counting-Aware Network 训练、评估与推理部署 【免费下载链接】PaddleOCR Turn any PDF or image document into structured data for your AI. A powerful, lightweight OCR toolkit that bridges the gap between i…

2026/10/1 19:32:23
Spring源码解析:构造器注入的类型转换与候选匹配机制

Spring源码解析:构造器注入的类型转换与候选匹配机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/1 19:32:35
openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由

openai-agents-python 多模型接入指南:深入解析 AnyLLMModel 适配层与 any-llm 路由 【免费下载链接】openai-agents-python A lightweight, powerful framework for multi-agent workflows 项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-pyth…

2026/9/30 21:32:11

日新闻

周新闻

月新闻