o Include what is directly used, nothing more.
o Don't rely on transitive inclusion.
o Order inclusions as: 1) own, 2) Qt, 3) others.
o Order inclusions alphabetically.
o Use forward declarations where possible.
o Blank line between include guard and #include directives.
Tested on Qt 4.8.6 and Qt 5.4.1.
This incidentally fixes "invalid use of incomplete type ‘class
QStringList’" which I got in pack_p.cpp with Qt 4.8.6.