[Qt-interest] how to achive the serialization in Qt

Ramesh ramesh.bs at robosoftin.com
Wed Apr 14 06:56:13 CEST 2010


Thank you very much David,

I tried your sample.. it works well.. Thanks again

 

From: David Boosalis [mailto:david.boosalis at gmail.com] 
Sent: Tuesday, April 13, 2010 7:56 PM
To: Ramesh
Cc: qt-interest at trolltech.com; QtS60-feedback at trolltech.com
Subject: Re: [Qt-interest] how to achive the serialization in Qt

 

I do not tend to use serializers for Widgets but data, maybe this example
will be of help


class User: public QObject {
  Q_OBJECT
 public:
  typedef enum {InUse,NotInUse,Suspended,NeverUsed} UseType;
  User();
  User(const User &);
  ~User();
  QString firstName;
  QString lastName;
  int     id; //* database ID
  int     profileID;
  QString email;
  QString loginID;
  QString password;
  QDateTime lastAccess;
  QString phone;
  QString note;
  bool    enableLogin;
  bool   operator==( const User &s) const;    
  User   &operator= ( const User &rhs );
  void    *socket;
  QHostAddress  ipAddress;
  protected slots:
 protected:
  QUuid threadID; // used by servers
  //ConnectStatus connectStatus;
};
QDataStream &operator<<(QDataStream &ds,User &);
QDataStream &operator>>(QDataStream &ds,User &);


--------------------------- user.cpp follows:

...
QDataStream &operator<<(QDataStream &ds,User &s)
{
  
  ds << (qint32) s.id;
  ds << (qint32) s.profileID;
  ds << s.firstName;
  ds << s.lastName;
  ds << s.email;
  ds << s.loginID;
  ds << s.password;
  ds << s.lastAccess;
  ds << s.phone;
  ds << s.note;
  ds << s.ipAddress;
  return(ds);
}
QDataStream &operator>>(QDataStream &ds,User &s)
{
  qint32  i32;
  // quint16 ui16;
  QUuid threadID;
  QHostAddress ha;
  ds >> i32; 
  s.id = i32;
  ds >> i32;
  s.profileID = i32;
  ds >> s.firstName;
  ds >> s.lastName;
  ds >> s.email;
  ds >> s.loginID;
  ds >> s.password;
  ds >> s.lastAccess;
  ds >> s.phone;
  ds >> s.note;
  ds >> s.ipAddress;
  return(ds);
}


For convenience I also like to make serializers for my list class.

 class UserList : public QList<User *> {
 public:
  UserList();
  bool removeUserByID(int ID);
  User *findByID(int id);
  User *findByLoginID(QString &id);
  User *findByLoginID(char *);
  User *validateUser(const QString &userName,const QString &password); 
};

QDataStream &operator<<(QDataStream &ds,UserList &);
QDataStream &operator>>(QDataStream &ds,UserList &);
...
/********************************************************************/
QDataStream &operator << (QDataStream &ds,UserList &sl)
{
  qint32  i32;
  User *s;
  i32 = sl.count();
  ds << i32;
  QListIterator<User *> iter(sl);
  while(iter.hasNext()) {
    s = iter.next();
    ds << *s;
  }
  return(ds);
}
/********************************************************************/
QDataStream &operator >> (QDataStream &ds,UserList &sl)
{
  User *s;
  int i;
  qint32  i32;
  ds >> i32;
  // qDebug() << __FILE__ << "read in this many users: " << i32;
  if (i32 < 1) {
    return(ds);
  }
  for (i=0;i<i32;i++) {
    s = new User();
    ds >> *s;
    sl.append(s);
  }
  return(ds);
}










On Tue, Apr 13, 2010 at 6:07 AM, Ramesh <ramesh.bs at robosoftin.com> wrote:

Hi,

 

Folks, can you help me in how to achieve the serialization in Qt,

 

I have some idea about QDataStream with this we can achieve the data stream,

In the documentation it is mentioned that we can write char, int, etc the
other  Data types, if I try to write the object it is throwing error L

 

How to write the object to file using QDataStream?

 

-----------------------------------------------

Robosoft Technologies - Come home to Technology

Disclaimer: This email may contain confidential material. If you were not an
intended recipient, please notify the sender and delete all copies. Emails
to and from our network may be logged and monitored. This email and its
attachments are scanned for virus by our scanners and are believed to be
safe. However, no warranty is given that this email is free of malicious
content or virus.

 


_______________________________________________
Qt-interest mailing list
Qt-interest at trolltech.com
http://lists.trolltech.com/mailman/listinfo/qt-interest

 


-----------------------------------------------
Robosoft Technologies - Come home to Technology

Disclaimer: This email may contain confidential material. If you were not an intended recipient, please notify the sender and delete all copies. Emails to and from our network may be logged and monitored. This email and its attachments are scanned for virus by our scanners and are believed to be safe. However, no warranty is given that this email is free of malicious content or virus.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.qt-project.org/pipermail/qt-interest-old/attachments/20100414/37c17111/attachment.html 


More information about the Qt-interest-old mailing list