Overloading the QDataStream << and >> operators for a user-defined type

Posted by Alex Wood on Stack Overflow See other posts from Stack Overflow or by Alex Wood
Published on 2010-03-18T20:56:21Z Indexed on 2010/03/18 21:01 UTC
Read the original article Hit count: 439

Filed under:
|
|

I have a an object I'd like to be able to read and write to/from a QDataStream. The header is as follows:

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;   
};

For all intensive purposes, the class just serves as an abstraction for a handful of QStrings and a QPixmap. Ideally, I would be able to write a QList to a QDataStream but I'm not exactly sure how to go about doing this.

If operator overloading is a suitable solution, would writing code like

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

be a potential solution? I'm very open to suggestions! Please let me know if any further clarification is needed.

© Stack Overflow or respective owner

Related posts about qt

Related posts about operator-overloading