So far I know several ways to #include
Qt classes:
#include <QtModule>
This brings all classes of a specific module, for example QDomDocument
, QDomElement
, QDomNode
and numerous others from #include <QtXml>
.
#include <QClassName>
This adds declaration of a specific class one may want to use, e.g. QEvent
, QStringList
, QFile
.
#include <qcstyleheader.h>
This has effect of the previous method, except for differently looking header name.
So I wonder, are there any other ways to #include
Qt classes? Are they equivalent, or are some of them preferred to others because of some reasons? Does this depend on #include
-ing inside a .cpp
or a .h
file? Does this influence compilation speed and size of the executable?
In short, what is the best way to go?
As a rule, the more header files there are, the longer it takes the compiler to parse each module. (Obviously precompiled headers render some of this moot.) So you generally want to include the fewest header files necessary to build your app correctly.
If you are only using a few classes in a given compilation unit, then just include the classes by name, in the modern style:
#include <QEvent>
#include <QPainter>
#include <QFont>
If you use a large number of classes from a given module, it is probably just as easy to include the module-level header, such as:
#include <QtGui>
You generally only use the older .h
style if a newer style header doesn't exist.
Now precompiled headers mitigate many of these issues by compiling once into a binary form. But there is still a cost to loading the precompiled symbols into memory and searching through them at compilation time. So the less you put in, the more efficient the build will be.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With