QT容器类介绍

当创建一个QObject时,如果使用了其他的对象,作为父对象(parent),那么这个Object就会被添加到父对象children()列表中。
对象树与拥有权:
QWidget作为QWidgets模块的基础类:扩展了动态间的父子关系。

元对象系统:
Qt中的元对象系统(Meta-Object Stystem)提供了对象间通信的信号和槽机制、运行时类型信息和动态属性系统。
(1)该类必须继承自QObject
(2)必须在类的私有声明Q_OBJECT宏(在类定义时,如果没有指定public或者private,则默认为private)
(3)元对象编译器Meta-Object Compiler(moc)为QObject的子类提供必要的代码。

QT容器类:
顺序容器:QList、QLinkedList,QVector、QStack和Qqueue:因为这些容器中的数据都是一个接一个线性存储的,所以称之为顺序容器。
对于大多数应用程序而言,使用最多的是QList,尽管是数组列表,但是可以快速对头部进行添加和删除的操作。
【QLinkedList】如果需要使用一个链表,那么可以使用QLinkedList。
【QVector】如果数据项可以占据连续的内存空间:可以使用QVector。
【QStack】提供了后进先出(LIFO)
【QQueue】提供了先进先出(FIFO)
QMap、QMultiMap、QHash、QMultiHash和QSet
因为这些容器存储的是<键,值>对,比如QMap

#include "mainwindow.h"
#include <QApplication>
#include <QCoreApplication>
#include <QList>
#include <QDebug>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QList<QString>list;
    list<<"aa"<<"bb"<<"c";     //插入项目
    if(list[1] == "bb") list[1] = "ab";
    list.replace(2,"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("dd");
    qDebug()<<"the list is:";
    for(int i=0;i<list.size();++i){
        qDebug()<<list.at(i);
    }
    //计划的输出是:dd aa ab bc dd
    //实际的输出是:dd aa ab bc dd

    QString str = list.takeAt(2);//从列表中删除第3个项目,并获取它
    qDebug()<<"at(2) item is:"<<str;
    qDebug()<<"the list is:";
    for(int i=0;i<list.size();++i){
        qDebug()<<list.at(i);
    }
    //计划输出:ab 后面是 dd aa bc dd
    //实际输出:ab 后面是 dd aa bc dd

    list.insert(2,"mm");        //在位置2插入项目
    //list.swap(1,3);             //交换项目1和项目3
    qDebug()<<"the list is:";
    for(int i=0;i<list.size();++i){
        qDebug()<<list.at(i);
    }
    //实际输出dd aa mm bc dd
    list.swap(1,3);
    qDebug()<<"the list is:";
    for(int i=0;i<list.size();++i){
        qDebug()<<list.at(i);
    }
    qDebug()<<"contain 'mm'?"<<list.contains("mm");//列表中是否包含"mm"
    qDebug()<<"the 'mm' count:"<<list.count("mm");//包含“mm”的个数
    //第一个mm的位置,默认从位置0开始往前找查找,返回第一个匹配的项目位置
    qDebug()<<"the first 'mm' index:"<<list.indexOf("mm");
    //第二个“mm”的位置,我们制定从制定的位置1查找
    qDebug()<<"the second 'mm' index:"<<list.indexOf("mm",1);

    return a.exec();
}

QList是一个模板类,提供了一个列表。QList是一个T类型的指针数组,所以支持基于索引的访问,而且当项目小于1000时,可以进行快速的插入操作。
插入操作:insert()
替换操作:replace()
移除操作:removeAt()
移动操作:move()
交换操作:swap()
在表尾添加项目:append()
在表头添加项目:prepend()
移除第一个项目:removeFirst()
移除最后一个项目:removeLast()
从列表中移除一项,并获取这个项目takeAt()
响应的takeFirst()和takeLast()
获取项目的索引:indexOf()
判断是否含有相应的项目contains()
获取一个项目出现的次数counts()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值