0

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

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

4

2 回答 2

2

使用这种约定有多种原因:-

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

我在 /usr/include/ 中有两个目录

  • QtCore
  • Qt

他们两个都有 QCoreApplication 。

于 2012-08-11T08:05:50.867 回答
1

对于从表单生成的代码,您可以在“Designer”选项卡选项中更改它:“Use Qt module name in #include-directive”。

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

#include <QtGui/QWidget>

即使在你的项目文件中你有

QT -= gui

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

如果你做了

#include <QWidget>

编译反而会失败。

于 2012-08-11T08:17:34.317 回答