c++ - 包含 Qt 头文件的正确方法是什么?

标签 c++ qt qt4

到目前为止我知道几种方法来#include Qt 类:

  • #include <QtModule>

    这会带来特定模块的所有类,例如 QDomDocument , QDomElement , QDomNode和许多其他来自 #include <QtXml> .

  • #include <QClassName>

    这添加了一个可能想要使用的特定类的声明,例如QEvent , QStringList , QFile .

  • #include <qcstyleheader.h>

    除了 header 名称看起来不同之外,这与之前的方法有相同的效果。

所以我想知道,有没有其他方法可以#include Qt类?它们是等效的,还是由于某些原因其中一些优于其他?这是否取决于 #include -在.cpp里面或 .h文件?这会影响编译速度和可执行文件的大小吗?

简而言之,最好的方法是什么?

最佳答案

一般来说,头文件越多,编译器解析每个模块的时间就越长。 (很明显,预编译的 header 会导致一些问题。)因此,您通常希望包含正确构建应用程序所需的最少 header 文件。

如果您只在给定的编译单元中使用几个类,则只需按现代风格按名称包含这些类:

#include <QEvent>
#include <QPainter>
#include <QFont>

如果您使用给定模块中的大量类,那么包含模块级 header 可能同样容易,例如:

#include <QtGui>

如果不存在较新的样式 header ,您通常只使用较旧的 .h 样式。

现在,预编译 header 通过一次编译为二进制形式来缓解其中的许多问题。但是将预编译符号加载到内存中并在编译时搜索它们仍然是有代价的。因此,您投入的越少,构建的效率就越高。

关于c++ - 包含 Qt 头文件的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4437598/

相关文章:

c++ - 需要 Qt Creator 源文件

c++ - 为什么我的 VC 2005 x64 调试 session 在第一次试用时总是失败(但在第二次试用时却没有)?

c++ - 遵循官方 direct2d 示例但出现访问冲突错误

c++ - Qt ISODate 格式的日期/时间包括时区

qt - 解决与 PyQt 新式信号槽的冲突

c++ - QFileDialog 打开第二个(可能是父级)不需要的窗口

c++ - 如何管理和迁移C++库?

python - 从 Python 调用 C++ 函数并将 OpenCV Mat 转换为 Numpy 数组

c++ - QTextEdit - 获取选择行号

python - 使用 QProcess 输出 youtube-dl