Qt动态创建List

Create List dynamically in Qt

我有一个结构体和一个 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 中是否可行?有出路吗?

嗯,你可以定义

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

这将定义 3 个列表,每个列表称为 lst。问题是,每个的生命周期都被限制在循环体内。这可能不是你想要的。

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

您不能声明可变数量的变量。相反,您制作列表(或其他容器)。

根据您的评论(lst1 将包含 id=1 的所有数据),我建议使用 QMap<int, QList<Data>>。例如

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的所有对象的列表