从C ++发送并在QML中接收的QList <qobject *>未定义

时间:2019-01-02 18:07:18

标签: qt qml qt5

我正在使用信号/插槽将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。会影响

0 个答案:

没有答案