У меня есть объект, который я хотел бы смочь считать и записать в 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) { ... }
быть потенциальным решением? Я очень открыт для предложений! Сообщите мне, необходимо ли дальнейшее разъяснение.
Думаю, вы ' я ответил на ваш собственный вопрос! Оператор потока
QDataStream& operator<<( QDataStream&, const Compound& )
будет работать нормально. В реализации вы просто используете существующие операторы потока на QDataStream
для сериализации отдельных битов вашего Compound
. Некоторые классы Qt также определяют операторы, не являющиеся членами QDataStream
. QString
едина, как и QList
, так что похоже, что вы отсортированы!