For UI sounds, yeah pretty much just that. Each "widget" (bool or float setting) contains its own audio emitter and plays sounds based on its own signals internally
For saving, I have an "Options" autoload which abstracts over ConfigFile and provides stuff like saving/loading/signals on change/etc