Проверив свой код, вам нужно удалить объект файла перед возвратом.
Кроме того, ваш код использует QSettings::QSettings(fileName, format)
c'tor, чтобы открыть INI-файл. Этот вызов заканчивается в функции QConfFile::fromName
(реализовано в qsettings.cpp ). Когда я его читаю (есть несколько макросов и таких, которые я решил не выполнять), файл не открывается повторно, если файл уже открыт (т.е. вы не удаляли объект с последнего раза). Таким образом, состояние будет в порядке во второй раз.