1

我有一个这样的自定义结构:

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

aReminderStruct myNewReminder;

如何转换myNewReminderQByteArray一次填充数据?

4

1 回答 1

3

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;
}
于 2014-03-18T17:51:35.093 回答