I m writing a Qt application and will need to store the settings for the program. I want them to be easily editable by non-advanced users yet be flexible enough for advanced users (thus allow easy automated editing via other programs, scripts, whatever). QSettings does provide two formats, the native format, which for Windows is registry, and the INI format, which is native for most other platforms. INI is fine, but seeing @QString(...) or other Qt stuff in there isn t really readable and is kinda error-prone.
The registry isn t great either. It wasn t designed to be messed with and thus not exactly good for editing or advanced usage; it does solve the problem of synchronization across threads and multiple QSettings objects (so I don t wipe everything out, though I can just use one global object, protected by a read-write locker). I m looking at XML, but it is pretty darned verbose and it does require writing a QSettings format (not really an issue) but very flexible.
I know other alternatives to XML exist but I m not really familiar with them; I certainly don t want to write a parser, exception for my own final format, not for the base thing.
Update - Note: I will not bypass QSettings at all, I will just write a format for it - which looks like it is just two function pointers (for a read and for a write function) passed to a static function and then I can use my format.
Update 2: I am also worried about Linux servers, which usually don t have a GUI.. I want people to be able to edit the configuration easily from the server via nano or something similar, without using the manager (yes, I will have a daemon server and a remote GUI manager).