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():节点位置?
 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Qt C++ 中可以使用 QListView 和 QListWidget 来实现列表的分页功能。 具体步骤如下: 1. 创建一个 QListView 或 QListWidget 对象。 2. 使用 setModel() 方法将 QListView 或 QListWidget 绑定到 QAbstractListModel 子类的实例上。 3. 在 QAbstractListModel 的子类中实现分页功能。可以在 rowCount() 方法中计算总页数,在 data() 方法中返回当前页的数据。 4. 在界面上添加分页控件,如翻页按钮,页码显示等。 5. 使用信号和槽机制将翻页按钮的点击信号与 QAbstractListModel 的子类中分页功能的实现相关联。 请注意,这只是一种参考实现方式,具体实现细节可能因为项目需求而有所不同。 ### 回答2: 在Qt C++中,我们可以使用QList来存储项目列表,并且可以通过分页来显示这些项目。要实现QList的分页功能,可以按照以下步骤进行: 1. 首先,定义一个QList用于存储项目列表,可以根据需要使用不同类型的数据。 QList<QString> itemList; 2. 接下来,根据分页的需求,定义用于分页的参数,例如每页显示的项数和当前页码。 int itemsPerPage = 10; int currentPage = 1; 3. 根据给定的参数,计算总页数和当前页的起始索引。 int totalPages = (itemList.size() + itemsPerPage - 1) / itemsPerPage; int startIndex = (currentPage - 1) * itemsPerPage; 4. 根据起始索引和每页显示的项数,获取当前页的项目列表。 QList<QString> currentPageItems = itemList.mid(startIndex, itemsPerPage); 5. 最后,我们可以使用获取的当前页项目列表进行显示或其他操作,例如在UI上显示分页内容。 for (const QString& item : currentPageItems) { // 在UI上显示项目 } 以上是基本的分页功能实现过程。可以根据具体需求对每页显示的项数、当前页码等进行调整或添加其他功能来增强分页效果。同时,还可以实现页码切换等操作来方便用户进行分页浏览。 ### 回答3: 在Qt C++中,可以通过一些简单的步骤实现QList的分页。 首先,我们需要准备一个QList对象,用于存储我们要进行分页的数据。假设我们有一个QList<QString>对象,名为dataList,存储了我们的数据。 接下来,我们需要定义每页显示的数据数量,可以根据需求自行设置。假设我们希望每页显示10条数据。 然后,我们需要定义当前页码和总页数的变量。假设当前页码为1。 接下来,我们可以使用QList的mid函数来实现分页。我们可以根据当前页码和每页显示的数据数量,计算出要截取的数据的起始索引和长度。 例如,我们可以使用下面的代码来获取当前页的数据: int startIndex = (currentPage - 1) * pageSize; int length = qMin(pageSize, dataList.size() - startIndex); QList<QString> currentPageData = dataList.mid(startIndex, length); 最后,我们可以根据得到的当前页数据,进行页面展示或其他操作。 另外,为了实现分页操作,我们还需要考虑一些其他功能,例如页面跳转、上一页和下一页等。我们可以使用QPushButton或者QSpinBox等Qt控件来实现这些功能,并通过信号和槽机制与我们的分页逻辑进行交互。 总结一下,实现QList的分页可以通过计算起始索引和长度,使用QList的mid函数来获取指定页的数据。同时,我们还可以通过Qt控件来实现更多的分页功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值