I would have agreed with you if Qt used something like the #pragma directive. Alas, they decided to inject keywords inside of the standard language which breaks every C++ compiler.
Every Qt "keyword" you talk about can be disabled with a fallback to namespaced macros.
foreach -> Q_FOREACH slots: -> Q_SLOTS
etc.