Для того, что бы сериализовать Qt классы при помощи boost::serialization нужно перегружать save, load, serialize.
Вот пример того, как сериализую QString.
C++ (Qt)
#ifndef QSTRINGSERIALIZATION_H_
#define QSTRINGSERIALIZATION_H_
#include <vector>
#include <QtCore/QString>
#include <QtCore/QVector>
#include <boost/serialization/nvp.hpp>
#include <boost/archive/xml_iarchive.hpp>
#include <boost/archive/xml_oarchive.hpp>
#include <boost/serialization/vector.hpp>
namespace boost
{
namespace serialization
{
template<class Archive>
inline void
save(Archive& ar, const QString& s, const unsigned int /*version*/)
{
std::vector<uint> tmp = s.toUcs4().toStdVector();
ar << make_nvp("QString2Usc4", tmp);
}
template<class Archive>
inline void
load(Archive& ar, QString& s, const unsigned int /*version*/)
{
std::vector<uint> tmp;
ar >> make_nvp("QString2Usc4", tmp);
s = QString::fromUcs4(&tmp[0],tmp.size());
}
template<class Archive>
inline void
serialize(Archive& ar, QString& s, const unsigned int file_version)
{
boost::serialization::split_free(ar, s, file_version);
}
} // namespace serialization
} // namespace boost
#endif /* QSTRINGSERIALIZATION_H_ */