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).