“#include <qtcore qcoreapplication =”“>”vs“#include <qcoreapplication>”</qcoreapplication> </qtcore>

时间:2012-08-11 07:47:51

标签: c++ qt include

当我在Qt Creator中创建一个新的移动应用程序时,我注意到在自动生成的代码中,他们使用#include <QtCore/QCoreApplication>而不是#include <QCoreApplication>,即使两者都应该相同。

由于Qt Creator本身就是这样做的,我认为这是推荐的约定。但是,为什么会这样,有人可以解释使用#include <QtCore/QCoreApplication>代替#include <QCoreApplication>有什么意义吗?

2 个答案:

答案 0 :(得分:3)

使用这种惯例有多种原因: -

  1. 如果编译器中包含的路径位于QtCore的目录级别,那么它将从那里跟踪包含文件QCoreApplication。
  2. 由于同一目录中存在多个Qt版本,因此最好使用废弃歧义的约定。(因为两个属于Qt3的QCoreApplication和其他Qt4会误导编译器)
  3. 我在/ usr / include /

    中有两个目录
    • QtCore
    • Qt的

    他们都有QCoreApplication。

答案 1 :(得分:1)

对于从表单生成的代码,您可以在“Designer”选项卡选项中更改:“在#include-directive中使用Qt模块名称。”

在指定模块时,我注意到一个有点但有时令人讨厌的问题。默认情况下,qmake添加/path/to/qt/sdk/include以包含路径。这意味着你可以做例如

#include <QtGui/QWidget>

即使您的项目文件中有

QT -= gui

然后编译顺利,但链接器会对你生气,因为不会选择QtGui4库进行链接。

如果你做了

#include <QWidget>

汇编会失败。