qt:QList和ExtraSelection
文章目录
- QList
- 1.概述
- 2.内部实现与性能
- 3.基本用法
- ExtraSelection
- 1.概述
- 2.示例
QList
1.概述
在Qt框架中,QList 是一个容器类,它在内部实现上类似于一个数组,但也提供了一些链表的特性。QList 的设计旨在提供一个在多数情况下既高效又方便的通用列表容器。用于存储元素列表。它提供了丰富的功能,包括添加、移除、访问元素等。同时,它以模板类的形式提供,能安全、高效地存储和管理任何同类型的数据集合。
2.内部实现与性能
存储结构:现代 QList 将元素存储在一段连续的相邻内存位置中,类似数组,但是与普通数组不同,它可以增长和和缩减,自动管理内存分配。
性能特点:
基于索引的随机访问速度快(O(1)复杂度),在列表末尾的追加(append)操作速度飞快。
由于它提供了一些
链表的特性,在列表中间或开头插入或删除元素时,会数组插入、删除更高效内存占用低,隐式共享,当你复制一个QList时,不会立即复制所有元素,而是共享相同的数据,仅在修改时才进行实际的复制
3.基本用法
头文件
#include<QList>实例化
QList<int>list;添加元素
list.append(1);list.append(2);访问元素
list[0]; list.at(1);删除元素
list.removeAt(1);//删除索引 i 处的元素list.removeOne(20);//删除一个值为20的元素list.clear();//清空所有元素ExtraSelection
1.概述
QTextEdit::ExtraSelection是 Qt 框架中的一个辅助结构体,它的主要作用是在 QTextEdit 或 QPlainTextEdit 这类文本编辑器控件中,为指定的文本区域提供临时的、附加的高亮显示或特殊格式
ExtraSelection 结构体非常简单,只包含两个核心成员变量:cursor:这是一个 QTextCursor 对象,用来精准定位你想要应用格式的文本范围,比如连续的几个单词、一整行、甚至是文档中的某个矩形区域
format:这是一个 QTextCharFormat 对象,用来定义你想要应用的具体样式,比如文字的颜色、背景色、甚至字体是否加粗等QTextCharFormat函数可在QT帮助中索引
2.示例
//设置当前行高亮QList<QTextEdit::ExtraSelection>extraselections;QTextEdit::ExtraSelection ext;//获取当前行ext.cursor=ui->textEdit->textCursor();//颜色QBrushqbrush(Qt::lightGray);//设置样式ext.format.setBackground(qbrush);//设置文本背景色ext.format.setProperty(QTextFormat::FullWidthSelection,true);//添加extraselections.append(ext);ui->textEdit->setExtraSelections(extraselections);