Saya mendapatkan kesalahan ini ketika saya menggunakan Qt 5.12 di Ubuntu Focal. Namun ketika saya menggunakan Qt 5.13.2 dan lebih tinggi, tidak ada kesalahan yang ditampilkan. Saya ingin membuatnya bekerja di 5.12 dan lebih rendah, apa yang harus saya lakukan untuk mencapainya?

TQProfile::TQProfile()
{
    type = "abc";
    abcSettings = ConfigHelper::generateAbcSettings();
}

QDataStream& operator << (QDataStream &out, const TQProfile &p)
{
    out << p.type << p.abcSettings;
    return out;
}

QDataStream& operator >> (QDataStream &in, TQProfile &p)
{
    in >> p.type >> p.abcSettings;
    return in;
}
struct TQProfile
{
    TQProfile();
    QString type;
    QJsonObject abcSettings;
};
Q_DECLARE_METATYPE(TQProfile)

QDataStream& operator << (QDataStream &out, const TQProfile &p);
QDataStream& operator >> (QDataStream &in, TQProfile &p);
2
Coel 21 Mei 2020, 02:23

1 menjawab

Jawaban Terbaik

Solusi sederhana adalah mengonversi QJsonObject ke QByteArray menggunakan QJsonDocument:

QDataStream& operator << (QDataStream &out, const TQProfile &p)
{
    QJsonDocument doc(p.abcSettings);
    out << p.type << doc.toJson(QJsonDocument::Compact);
    return out;
}

QDataStream& operator >> (QDataStream &in, TQProfile &p)
{
    QByteArray data;
    in >> p.type >> data;
    p.abcSettings = QJsonDocument::fromJson(data).object();
    return in;
}
2
eyllanesc 21 Mei 2020, 03:06