Qt扫盲-QList使用总结
QList使用总结
- 概述
- 一、QList 声明及初始化
- 1. 声明 QList
- 2. 初始化 QList
- 二、QList 基本的 增加、删除、移动、修改
- 1. 增加节点
- 2. 删除节点
- 3. 移动节点
- 4. 修改节点值
- 三、QList 定位节点
- 四、QList 的基本信息
- 五、QList 迭代器功能
概述
QList是Qt的泛型容器类之一。它将项目存储在一个列表中,该列表提供基于索引的快速访问以及基于索引的插入和删除。
QList、QLinkedList 和 QVector 提供了类似的 API 和功能。它们通常是可互换的,但性能有所区别。
- QVector 应该是默认首选的容器
- QList是最广泛用于Qt API中传递值的容器
- QList不是指针结构体类型的链表,真正的结构体指针链表是 QLinkedList
一、QList 声明及初始化
QList可以保存基本数据类型的,如int,double,bool等;但是在存储QObject对象及其子类对象时,不能直接存对象本身,而是只能存对象的地址;
1. 声明 QList
声明简单:
//基本数据类型
QList<int> integerList;
QList<QDate> dateList;//存储QObject对象的地址
QList <QWidget *> ptr_widgets;
QList <QObject *> ptr_objects;
2. 初始化 QList
初始化也很简单;若没初始化,链表默认为空的。
QList<QString> list = { "one", "two", "three" };QWidget * widget1 = new QWidget();
QWidget * widget2 = new QWidget();
QList<QWidget *> ptr_widgets = {widget1, widget2};
二、QList 基本的 增加、删除、移动、修改
QList 在有些实现都是需要多个基本操作组合来实现的,不同的实现用的方法也不一致,Qt提供的都是最核心、最单一的功能。
1. 增加节点
- insert():插入节点到
- append():尾部添加节点
- prepend() :头部添加节点
- operator <<():尾部添加节点或链表
- operator+=():尾部添加节点
2. 删除节点
- removeAt():删除节点
- removeFirst():删除头节点
- removeLast():删除尾节点
3. 移动节点
- move():链表内移动节点位置
- swap():俩个链表交换值(其实交换一下地址映射就能实现)
4. 修改节点值
- replace():替换链表内的节点值
三、QList 定位节点
QList是有序的链表,可以通过索引来得到
- operator [ ] 数组索引符:这个和普通数组一样的使用 [ ] 访问下标方法一致
- at() 函数:也是通过索引值,也即是下标方式
Qt 推荐使用at()函数,这样的效率更好,因为 at()函数不会发生 深拷贝 ,而另外一种方式会。
QList还提供了一些快捷的 索引 + 返回索引节点 + 删除原索引节点,也就是组合的功能;但是这个是 take…不是get…这样的,这就意味着,这个其实是✂剪掉一个节点,并返回
- takeAt():取得在指定位置的节点
- takeFirst():取得头节点 ;等价【takeAt(0)】
- takeLast():取得尾节点
四、QList 的基本信息
- contains():是否包含节点xxx
- count():对指定节点值计数
- isEmpty():链表为空?
- size():链表大小?
- indexOf():节点位置?
等等。。。常用功能
但是有些功能就需要组合一下就行
其他功能还需要看帮助文档
五、QList 迭代器功能
有两种迭代器的风格
- Java style
- STL style
区别确实有,但是不大;
官方说的性能来看:STL风格的更强大;毕竟能融入算法模块;
但Java的风格更加人性化,更容易使用些,性能也不差,平常代码完全能胜任了。
Qt扫盲-QList使用总结相关推荐
- Qt扫盲- QTcpSocket 理论总结
QTcpSocket 理论总结 一.概述 二.使用 一.概述 TCP (Transmission Control Protocol)是一种可靠的.面向流的.面向连接的传输协议.它特别适合于数据的连续传 ...
- Qt扫盲-QSqlQuery理论总结
QSqlQuery理论总结 一.概述 二.使用 1. 数据查询 2.查询参数绑定 3. 绑定值的方法 1. 使用命名占位符的命名绑定: 2. 使用命名占位符的位置绑定: 3. 使用位置占位符绑定值(版 ...
- Qt中QList用法详解
QList 列表指针的 释放 1,使用qDeleteAll() QList<T*> list: qDeleteAll(list): list = NULL; QList<T*> ...
- QT的QList排序
第一个示例:QList排序 数据类型: class Student { public: Student(); QString name; int age; int num; void insertDa ...
- Qt扫盲-Bar柱状图理论
Bar柱状图理论 一.QAbstractBarSeries 1. 常用设置 2. 管理 BarSet 二.QBarSerie 和 QHorizontalBarSeries 1. 垂直柱状图 2. 水平 ...
- qt中QList使用removeAt()删除元素
提要 QList删除元素的时候需要特别注意一点,将元素删除后链表中元素的排列.删除一个元素后,后面的元素会补到被删元素的位置,这样在for循环中若删除元素后继续执行下标++,则会少遍历元素.下面看一个 ...
- Qt扫盲-QSS概述
QSS概述 一.概述 二.详细 一.概述 QSS 其实是Qt样式表,Qt样式表是Qt界面的一种强大的机制,除了通过继承QStyle已经可以实现的功能外,它还允许您自定义窗口组件的外观.Qt样式表的概念 ...
- Qt扫盲-网络编程概述
网络编程概述 一.Qt网络编程概述 二.Qt对Http,FTP应用层协议支持 三.TCP通信编程支持 四.UDP通信编程支持 五.主机信息的获取 六.网络代理 七.底层管理的支持 一.Qt网络编程概述 ...
- Qt扫盲-QThread使用总结
QThread理论使用总结 一.概述 二.使用方式 1. 方式一 2. 方式二 三.线程管理 1. 线程状态及信息 2. 线程退出 3. 线程休眠 一.概述 一个 QThread 管理程序中的一个线程 ...
最新文章
- c语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出,从键盘上输入3个数,将它们按由大到小的顺序排列好输出...
- 从早期的初创企业到MongoDB的经理(播客)
- java非堆内存_java – 监视JVM的非堆内存使用情况
- python import 错误 TypeError: 'module' object is not callable
- html自动保存excel,如何在Excel中将Excel Sheet保存为HTML?
- 测绘——利用CASS及数据库批量导出/修改/更新地籍信息
- Python API接口压力测试简单实现(并发测试)
- Excel多个工作簿合成为一个工作表
- 出去锻炼还是不让数据科学决定
- vue项目动态设置浏览器标题title两种方法
- 在K8s上部署Redis 集群
- C++ 语法 const限定符
- 在安卓应用开发过程中减小安卓应用大小的 9 种方法
- 全球365隐私政策服务协议
- 出国留学,转计算机编程学习入门以及面试经验之一家之言
- 每日一道算法题:高楼扔鸡蛋问题(动态规划问题)
- 红叶倾城一键网页游戏服务端+客户端(无须安装Java)源码
- 一天中最好的排毒时间
- ECNU计科复试机试(2021)
- 国开计算机应用技术形考任务4答案,国开计算机应用基础形考任务答案.pdf
热门文章
- 《程序员面试金典(第6版)》 面试题 08.11. 硬币(动态规划,组合问题,C++)
- 如何用Navicat连接mongoDB
- 关于 git 的用法
- python3中将'\xb2\xbb\xca\xc7\xc4\xda\xb2\xbf\xbb\xf2\xcd\xe2\xb2\xbf\xc3\xfc\xc1\xee'转成中文
- 差分放大电路在信号传输的作用及设计原理
- jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: blank
- C++ Primer Plus 编程练习3
- 物联网技术与应用期末大作业
- SRGAN 论文学习
- 发微博怎么才能把自己的地理位置改成其他国家