我正在使用信号/插槽将CList从C ++发送到QML
从对外部API服务器的调用中填充数据,将数据解析并将其添加到QList之后,我发出带有列表的信号,并在qml文件中进行处理。
{
qDebug() << "Get players...";
QJsonObject obj = doc.object();
auto status = obj["status"].toBool();
auto players = obj["players"].toArray();
QList<Player*> ps;
foreach (const QJsonValue & v, players)
{
auto obj = v.toObject();
auto player = obj["player"].toObject();
auto p = new Player();
p->setId(player["id"].toString().toInt());
p->setName(player["name"].toString());
ps.append(p);
}
qDebug() << "got players: " << ps.count(); //this prints 4000
emit gotPlayers(status, ps);
}
信号定义如下
signals:
void gotPlayers(bool status, QList<Player *> players);
在QML文件中,这就是我所拥有的
Connections {
target: APIConnection
onGotPlayers: {
console.log(players);
}
}
第一次调用onGotPlayers
时,它总是打印
qml: undefined
,并在随后的任何其他后续呼叫中将打印
qml: QVariant(QList<Player*>)
有关为什么发生这种情况的任何建议? I know of a bug in 5.11,但是我将MSVC2015 32位使用5.9.5。会影响