The &quot;magic macros&quot; aren&#x27;t a big deal; you just stick &quot;QOBJECT&quot; at the top of every class, it&#x27;s not hard, and it&#x27;s just one line (and one word).  And the complexity of Qt&#x27;s libraries is irrelevant; the whole point of using a toolkit like Qt is so that it hides the complexity for you and gives you tools in an easier-to-use format instead of you reinventing the wheel over and over, or getting different tools from different places, of varying quality.  In the process of that, Qt (much like Boost) attempts to provide <i>all</i> the tools you&#x27;ll need for general tasks, rather than just supplementing STL by providing lots of stuff it lacks.<p>Also, STL syntax is ugly and hard to work with; Qt&#x27;s is a lot easier, which is another reason they replace STL&#x27;s functionality with their own.  (Boost, similarly, has its own style of syntax.)<p>(If you&#x27;re referring to any macros related to the signal&#x2F;slot mechanism, that&#x27;s because C++ itself has no such mechanism natively so of course it&#x27;s going to require extra macros and a preprocessor to provide that.)