문제

I have a custom struct like this:

struct aReminderStruct{
    QString name;
    QDate date;
    QTime time;
    QString reminderText;
};

aReminderStruct myNewReminder;

How can I convert myNewReminder to QByteArray once filled with data?

도움이 되었습니까?

해결책

You need to define custom datastream operators like that:

struct aReminderStruct{
    QString name;
    QDate date;
    QTime time;
    QString reminderText;
};

// you need this if you want to use your type with QVariant
Q_DECLARE_METATYPE(aReminderStruct)

QDataStream &operator<<(QDataStream &out, const aReminderStruct &a)
{
    out << name << date << time << reminderText;
    return out;
}

QDataStream &operator>>(QDataStream &in, aReminderStruct &a)
{
    in >> name >> date >> time >> reminderText;
    return in;
}

...

int main(...)
{
    QApplication app(...);

    qRegisterMetaTypeStreamOperators<aReminderStruct>("aReminderStruct");
     ...
    aReminderStruct a;
    a = ...;

    QByteArray data;
    QDataStream ds(&data, QIODevice::ReadWrite);
    ds << a;
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top