The idea of QCObjects is to make the code as simple and clean as possible, so you can scale to large scale projects effectively avoiding to write spaghetti code.
What are QCObjects Smart Widgets?
In short words: They are a simplified way to write custom elements. The basic Idea of this feature is enrich your static custom elements to make them dynamic.
Behind the curtain, QCObjects will add a component into the DOM hierarchy of the declared and registered widget. And any attribute value will be transferred to that component. You can control a smart widget using a controllerClass attribute the same way you use it with a normal component tag. As everything in QCObjects, smart widgets are loaded in runtime.