首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"#include <QtCore/QCoreApplication>“vs "#include <QCoreApplication>”

"#include <QtCore/QCoreApplication>“vs "#include <QCoreApplication>”
EN

Stack Overflow用户
提问于 2012-08-11 15:47:51
回答 2查看 5.9K关注 0票数 0

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-11 16:05:51

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

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

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

  • Qt

  • QtCore

它们都有QCoreApplication在里面。

票数 2
EN

Stack Overflow用户

发布于 2012-08-11 16:17:34

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

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

代码语言:javascript
复制
#include <QtGui/QWidget>

即使在您的项目文件中有

代码语言:javascript
复制
QT -= gui

然后编译进行得很好,但是链接器会对你发火,因为不会选择QtGui4库进行链接。

如果你这样做了

代码语言:javascript
复制
#include <QWidget>

相反,编译将失败。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11913002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档