1) Странное использование QIODevice::startTransaction()
.Вы хотели использовать QDataStream:startTransaction()
?Вам это вообще не нужно, но если вы хотели использовать его для проверки «правильных» (полных) данных в файле, сделайте это правильно (хотя обычно это используется с асинхронными устройствами, такими как сокеты)):
int nPoints; // temp variable to hold data, assuming radbeam->nPoints is an int
QDataStream in(&fin);
in.startTransaction();
in >> nPoints;
if (in.commitTransaction() && radbeam != nullptr)
radbeam->nPoints = nPoints;
fin.close();
2) Вероятнее всего, Segfault вызван указателем radbeam
(например, нулевым), но, возможно, если вы пытаетесь прочитать поврежденные данные непосредственно в переменную-член nPoints
.Невозможно определить причину без MCVE.