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使用总结相关推荐

  1. Qt扫盲- QTcpSocket 理论总结

    QTcpSocket 理论总结 一.概述 二.使用 一.概述 TCP (Transmission Control Protocol)是一种可靠的.面向流的.面向连接的传输协议.它特别适合于数据的连续传 ...

  2. Qt扫盲-QSqlQuery理论总结

    QSqlQuery理论总结 一.概述 二.使用 1. 数据查询 2.查询参数绑定 3. 绑定值的方法 1. 使用命名占位符的命名绑定: 2. 使用命名占位符的位置绑定: 3. 使用位置占位符绑定值(版 ...

  3. Qt中QList用法详解

    QList 列表指针的 释放 1,使用qDeleteAll() QList<T*> list: qDeleteAll(list): list = NULL; QList<T*> ...

  4. QT的QList排序

    第一个示例:QList排序 数据类型: class Student { public: Student(); QString name; int age; int num; void insertDa ...

  5. Qt扫盲-Bar柱状图理论

    Bar柱状图理论 一.QAbstractBarSeries 1. 常用设置 2. 管理 BarSet 二.QBarSerie 和 QHorizontalBarSeries 1. 垂直柱状图 2. 水平 ...

  6. qt中QList使用removeAt()删除元素

    提要 QList删除元素的时候需要特别注意一点,将元素删除后链表中元素的排列.删除一个元素后,后面的元素会补到被删元素的位置,这样在for循环中若删除元素后继续执行下标++,则会少遍历元素.下面看一个 ...

  7. Qt扫盲-QSS概述

    QSS概述 一.概述 二.详细 一.概述 QSS 其实是Qt样式表,Qt样式表是Qt界面的一种强大的机制,除了通过继承QStyle已经可以实现的功能外,它还允许您自定义窗口组件的外观.Qt样式表的概念 ...

  8. Qt扫盲-网络编程概述

    网络编程概述 一.Qt网络编程概述 二.Qt对Http,FTP应用层协议支持 三.TCP通信编程支持 四.UDP通信编程支持 五.主机信息的获取 六.网络代理 七.底层管理的支持 一.Qt网络编程概述 ...

  9. Qt扫盲-QThread使用总结

    QThread理论使用总结 一.概述 二.使用方式 1. 方式一 2. 方式二 三.线程管理 1. 线程状态及信息 2. 线程退出 3. 线程休眠 一.概述 一个 QThread 管理程序中的一个线程 ...

最新文章

  1. c语言中从键盘上输入三个数,将之排序后按由大到小的顺序输出,从键盘上输入3个数,将它们按由大到小的顺序排列好输出...
  2. 从早期的初创企业到MongoDB的经理(播客)
  3. java非堆内存_java – 监视JVM的非堆内存使用情况
  4. python import 错误 TypeError: 'module' object is not callable
  5. html自动保存excel,如何在Excel中将Excel Sheet保存为HTML?
  6. 测绘——利用CASS及数据库批量导出/修改/更新地籍信息
  7. Python API接口压力测试简单实现(并发测试)
  8. Excel多个工作簿合成为一个工作表
  9. 出去锻炼还是不让数据科学决定
  10. vue项目动态设置浏览器标题title两种方法
  11. 在K8s上部署Redis 集群
  12. C++ 语法 const限定符
  13. 在安卓应用开发过程中减小安卓应用大小的 9 种方法
  14. 全球365隐私政策服务协议
  15. 出国留学,转计算机编程学习入门以及面试经验之一家之言
  16. 每日一道算法题:高楼扔鸡蛋问题(动态规划问题)
  17. 红叶倾城一键网页游戏服务端+客户端(无须安装Java)源码
  18. 一天中最好的排毒时间
  19. ECNU计科复试机试(2021)
  20. 国开计算机应用技术形考任务4答案,国开计算机应用基础形考任务答案.pdf

热门文章

  1. 《程序员面试金典(第6版)》 面试题 08.11. 硬币(动态规划,组合问题,C++)
  2. 如何用Navicat连接mongoDB
  3. 关于 git 的用法
  4. python3中将'\xb2\xbb\xca\xc7\xc4\xda\xb2\xbf\xbb\xf2\xcd\xe2\xb2\xbf\xc3\xfc\xc1\xee'转成中文
  5. 差分放大电路在信号传输的作用及设计原理
  6. jquery.min.js:2 Uncaught Error: Syntax error, unrecognized expression: unsupported pseudo: blank
  7. C++ Primer Plus 编程练习3
  8. 物联网技术与应用期末大作业
  9. SRGAN 论文学习
  10. 发微博怎么才能把自己的地理位置改成其他国家