От сохранения указателей толку мало
Сохранять надо данные на которые эти указатели указывают!
У QStandardItem есть переопределенные функции:
QDataStream & operator<< ( QDataStream & out, const QStandardItem & item )
QDataStream & operator>> ( QDataStream & in, QStandardItem & item )
значит для них можно написать:
dsOut << item;
dsIn >> item;
При этом в поток будут записаны/считаны ВСЕ данные из этих классов.
Если у тебя есть QList<QStandardITem> то можно написать просто:
dsOut << list;
dsIn >> list;
и все бедет писатся/читатся так как операторы << >> переопределены для списка( смотри описание QList и комент к операторам ).
Для QList<*QStandardITem> нужно сделать свои реализации операторов << >> и все
И вообче учите матчасть. В смысле C++