Making your objects serializable with QVariant
Now that we implemented the logic in our business classes, we have to think about what we are going to serialize and how we are going to do it. The user interacts with a Track
class that contains all the data to be recorded and played back.
Starting from here, we can assume that the object to be serialized is Track
, which in turn should somehow bring along its mSoundEvents
containing a list of SoundEvent
instances. To achieve this, we will rely heavily on the QVariant
class.
You might have worked with QVariant
before. It is a generic placeholder for any primitive type (char
, int
, double
, and so on) but also complex types (QString
, QDate
, QPoint
, and many more).
Note
The complete list of QVariant supported types is available at http://doc.qt.io/qt-5/qmetatype.html#Type-enum.
A simple example of QVariant
is:
QVariant variant(21); int answer = variant.toInt() * 2; qDebug() << "what is the meaning...