In situations like this, usually you load the system defaults, and then you load the user specific settings file.
So when your program has been running and the user ignores some words, and adds others, etc. you save this to the user's dictionary in their application data directory.
If you really want your program to save additions to the system wide changes to the default dictionary, you should prompt the user, if they want to save dictionary changes to the system defaults, and then open a superuser login, or whatever credentials that you would need to save edits to that file, and then save it.
Or you could even have it where if the program was started initially as a superuser, then it saves it to the system folder, otherwise it saves it to the user's application directory.
The model that I follow for settings and what not, is explained in QSettings
.
http://qt-project.org/doc/qt-4.8/qsettings.html#details
http://qt-project.org/doc/qt-4.8/qsettings.html#platform-specific-notes
QSettings
handles everything rather elegantly if you set up your application name and organization name. It doesn't do hunspell dictionaries out of the box, but the locations/paths it uses are significant.
Hope that helps.