Hmm... I don't totally get it all just from skimming the qml c++ binding docs for a few minutes, but it looks like you'd have to write QObject wrappers for all of the dfhack classes that you want to expose. I guess you then have to worry about translating return data from the dfhack methods into various QObjects.....
Basically, what I was thinking of is something like this: Some sort of app that loads one or more script plugins (each in it's own file) and presents a window with, say, one folder tab per plugin. Each plugin is a script in some scripting language (python, javascript-like such as QML, lua... I don't really care except that it should be as easy/familiar to as many people as possible) that declares some sort of user interface in some sort of initialization function ("add checkbox with label x", "add pushbutton with label y", etc.) preferably in the simplest terms possible. Then when someone clicks a tab, the plugin's ui is shown and ui widget events get dispatched to methods in the plugin script, etc, and those methods call dfhack class methods.
Assuming that QML implements enough of javascript and has enough support functions available, it sounds like this might be a good way to do things.... Lots of people know javascript and would be able to figure out how to write plugins fairly quickly.