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的所有对象的列表
我有一个结构体和一个 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的所有对象的列表