Qt容器中存放的数据
Qt容器中的数据必须是可赋值的数据类型,也就是说这种类型的数据必须提供一个默认的构造函数(无参构造函数),复制构造函数和一个赋值操作运算符。Qt中的基本类型和大多数数据类型都可以存放在Qt的容器中(如int,QString,QDate和QTime),不过Qt中的QObject及其子类(没有复制构造函数和赋值运算符),不能存放在Qt容器中,替代方案是存放其指针,如下。
QList<*QObject> obList;
队列容器
Qt提供QList,QLinkedList,QVector3中存放队列容器,但处理数据的时间复杂度不同。
QList和QVector查询速度快,插入慢;QVector插入速度快,查询慢。
//添加元素1
QList<QString> list;
list<<"one"<<"two";
//添加元素2
QList<int> list;
for(int i=0; i<10; i++){
list.insert(list.end(), i);
}
//遍历
for(i=list.begin(); i!=list.end(); i++){
qDwbug()<<(*i);
}
集合容器
Qt提供了QMap和QHash两种容器。
QHash的查找速度更快。
QHash以任意顺序进行存放,QMap按照Key的次序进行存放。
QHash中的键需要提供operator==()和全局的qHash()函数,而QMap中的键需要提供operator<()的方法。
QVariant类似与C++中的联合(Union)数据类型。
QVariant可以存放QColo,QFont等类型数据。