在Qt中动态创建列表

时间:2017-01-10 10:20:50

标签: c++ qt variables qlist

我有一个struct和一个struct的QList。基于计数我想创建多个QList。

例如:

struct Data
{
    QString id;
    QString name;
};

QList<Data> lst;

假设我在lst中有3个值,我想创建3个QList。

for(int i=0;i<=lst.count();i++)
{
     //Declare new list here for each.
     //Result 3 lists : QList<Data> lst1,QList<Data> lst2,QList<Data> lst3
} 

有人可以告诉我,这是否可以在Qt?有出路吗?

2 个答案:

答案 0 :(得分:0)

好吧,你可以定义

for(int i=0;i<=3;i++)
{
     QList<Data> lst;
} 

将定义3个列表,每个列表称为lst。问题是,每个的寿命都限于循环体。这可能不是你想要的。

我怀疑你想要一个列表列表QList< >模板是通用的,它可以包含任何其他类型,包括另一个QList< >。所以你得到QList<QList< Data > >

答案 1 :(得分:0)

您无法声明变量数量的变化。而是制作列表(或其他容器)。

根据你的评论( lst1将拥有id = 1 的所有数据),我建议使用QMap<int, QList<Data>>。 E.g。

QMap<int, QList<Data>> lstN;
QList<Data> lst;
for(int i=0;i<lst.count();i++)
{
    lstN[lst[i].id] << lst[i];
}

这为您提供了从id到具有该id的Data对象列表的映射。例如。 lstN[1]是ID = 1

的所有对象的列表