0

在 Ubuntu 12.10 上使用 CodeLite 5.1:

创建了一个最小的 QTGui 应用程序。构建并运行良好。

#include <QApplication> 
#include <QButton> 

由向导插入到 main.cpp 文件中 - 没问题。我补充说:

#include <QString> 

根据 QT 文档,预处理器告诉我它找不到 QString。我检查了项目的包含设置 -

../qt4 

../qt4/qt4GUI 

是否正确。我试过:

#include <qt4/QString>

有不同的大小写排列 - 一切都没有。

怎么了?(也发布在 CodeLite 论坛上)。

4

1 回答 1

1

虽然QApplicationQButton是 Qt GUI 模块QString的一部分,但也是 Qt Core 模块的一部分。GUI 依赖于 Core,因此 Core 库已经链接,这不是问题。

问题似乎是您的包含路径仅包含 Qt 顶层以及 GUI 子目录。Qt 的头文件以模块为结构,每个模块有一个目录。这意味着<QApplication><QButton>头文件在../qt4/qt4GUI其中,因此可以被编译器找到。

但是,QString放置在../qt4/qt4Core(1)中,因此要么包含在#include <QtCore/QString>(2)中,它将在正确的模块子目录中查找,或者通过将子目录添加到项目配置中的包含路径(推荐),所以#include <QString>有效也。


(1)我认为这应该是../qt4/QtCore,对于 Qt GUI ../qt4/QtGui,但你在问题中写了一些不同的东西......

(2)在 Qt 内部,其他模块的类是这样包含的,即相对于 Qt 顶级包含路径,所以如果您包含一个使用的类QStringQApplication作为一个示例),它可以在不添加另一个包含的情况下工作。

于 2013-04-18T19:04:21.103 回答