В примере от Qt есть такое:
...
Почему вместо этого не поставить просто #include <QtGui>?
Потому что QtGui включит весь модуль Gui, и если у тебя это написано в заголовочном файле, то все
TU, которые включают этот заголовок, будут включать и GtGui, и как следствие, возрастёт время компиляции на пустом месте. Вместо этого используют forward declaration, а в каждом конкретном TU дополнительно подключаются уже те заголовки, которые нужны - <QAction>, <QLabel> и т.д.