Перегрузка QDataStream <операторы <and>> для пользовательского типа

У меня есть объект, который я хотел бы смочь считать и записать в QDataStream. Заголовок следующие:

class Compound
{
public:
    Compound(QString, QPixmap*, Ui::MainWindow*);
    void saveCurrentInfo();
    void restoreSavedInfo(QGraphicsScene*);

    void setImage(QPixmap*);

    QString getName();

private:
    QString name, homeNotes, addNotes, expText;
    Ui::MainWindow *gui;
    QPixmap *image;        

    struct NMRdata
    {
        QString hnmrText, cnmrText, hn_nmrText, hn_nmrNucl, notes;
        int hnmrFreqIndex, cnmrFreqIndex, hn_nmrFreqIndex,
        hnmrSolvIndex, cnmrSolvIndex, hn_nmrSolvIndex;
    }*nmr_data;

    struct IRdata
    {
        QString uvConc, lowResMethod,
            irText, uvText, lowResText, highResText,
            highResCalc, highResFnd, highResFrmla,
            notes;
    int irSolvIndex, uvSolvIndex;
    }*ir_data;

    struct PhysicalData
    {
        QString mpEdit, bpEdit, mpParensEdit, bpParensEdit,
            rfEdit, phyText, optAlpha,
            optConc, elemText, elemFrmla,
            notes;
        int phySolvIndex, optSolvIndex;
    }*physical_data;   
};

Во всех отношениях, класс просто служит абстракцией для горстки QStrings и QPixmap. Идеально, я смог бы записать QList в QDataStream, но я не абсолютно уверен, как пойти о выполнении этого.

Если перегрузка оператора является подходящим решением, был бы при писании кода как

friend QDataStream& operator << (QDataStream&,Compound) { ... }

быть потенциальным решением? Я очень открыт для предложений! Сообщите мне, необходимо ли дальнейшее разъяснение.

6
задан PaperBirdMaster 5 February 2014 в 17:35
поделиться

1 ответ

Думаю, вы ' я ответил на ваш собственный вопрос! Оператор потока

QDataStream& operator<<( QDataStream&, const Compound& )

будет работать нормально. В реализации вы просто используете существующие операторы потока на QDataStream для сериализации отдельных битов вашего Compound . Некоторые классы Qt также определяют операторы, не являющиеся членами QDataStream . QString едина, как и QList , так что похоже, что вы отсортированы!

8
ответ дан 9 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: