1.QList介绍及应用
QList是目前最常用的容器类,它存储了给定类型的值的一个列表,而这些值可以通过索引访问。QList使用数组来实现,以确保进行快速的基于索引的访问。
实例:
QList<QString> list;
list << "aa" << "bb" << "cc"; // 插入项目
if(list[1] == "bb") list[1] = "ab";
list.replace(2, "bc"); // 将“cc”换为“bc”
qDebug() << "the list is: "; // 输出整个列表
for(int i=0; i<list.size(); ++i) // 遍历
{
qDebug() << list.at(i); // 现在列表为aa ab bc
}
list.append("dd"); // 在列表尾部添加
list.prepend("mm"); // 在列表头部添加
list.insert(2, "mm"); // 在位置2插入项目
list.swap(1,3); // 交换项目1和项目3
2.QList配置ini文件保存及读取
QSettings :: setValue()需要QVariant作为第二个参数.要将QList作为QVariant传递,必须将其声明为Qt元类型。
使用Q_DECLARE_METATYPE标记自定义类型,可以让QMetaType查询到类型,也可以让QVariant识别。
#include "common.h"
#include "database.h"
Q_DECLARE_METATYPE(QList<int>)
// 构造函数
qRegisterMetaTypeStreamOperators<QList<int> >("QList<int>");
QList<int> myList;
myList.append(1);
myList.append(2);
myList.append(3);
// 保存
ConfigInformation cfg;
cfg.Set("List","line", QVariant::fromValue(list));
// 读取
QList<int> list = cfg.Get("List","line").value<QList<int>>();