Bunch of comments, not formally requesting changes since for a couple of them I'm unsure if I missed something specific to the module being at play.
I'm still not quite sure why it was requested to be honest. The reusability potential of those kcfgs is rather low in most cases.
I'd expect this to be unnecessary since load() will emit ThemeChanged or EngineChanged if said config keys really changed.
I'd expect either setNeedsSave(false) here, or configChanged() to be connected from the ctor. Are we sure that state is reset properly on apply being clicked?
What about using the name elements for both entries to avoid ending up with signals starting with an uppercase? (although one could argue that kconfig_compiler should be fixed instead... it somehow lowercases properly the property and getter but not the signal).