(C ++)Code :: blocks不识别QT4类

时间:2010-06-21 21:46:25

标签: c++ qt4 codeblocks

到目前为止,我已经在控制台工作,几天前决定尝试QT GUI。 我下载了QT SDK,安装它,调整QT的位置和 设置PATH环境变量 - >根据网站上的说明。

我在Code :: Blocks-in中打开了一个新的Qt4项目,似乎一切正常。 默认情况下有一个示例:

#include <QApplication>
#include <QFont>
#include <QPushButton>


int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    QPushButton quit("Quit");

    quit.resize(75, 30);
    quit.setFont(QFont("Times", 18, QFont::Bold));

    QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

    quit.show();

    return app.exec();
}

开始吧一切都好。

之后我去了官方网站的教程,最后一个例子。 某种简单的游戏。我已经完成了所有.h和.cpp文件的复制粘贴然后放入 他们在当前项目中看看它是如何工作的,但随后出现了问题。

Code :: Blocks无法识别某些类。 例如:: #include QTimer:没有这样的文件或目录                 #include QRect:没有这样的文件或目录

我卸载了QT并重新安装并重新配置了所有内容,但问题并未解决。

这些类不起作用,也不在默认示例::

#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QTimer>     does not have real purpose , just for illustration

int main(int argc, char* argv[])
{
    QApplication app(argc, argv);

    QPushButton quit("Quit");

    quit.resize(75, 30);
    quit.setFont(QFont("Times", 18, QFont::Bold));

    QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

    quit.show();

    return app.exec();
}

ba \ 107 \ main.cpp | 4 | QTimer:没有这样的文件或目录| || ===构建完成:1个错误,0个警告=== |

我现在没有多少课程正常工作,这只是其中的一部分。

不要在Google上寻找解决方案几天来热水,也许对于你们中的一些人来说 ,这是一个非常简单的问题。

由于

3 个答案:

答案 0 :(得分:1)

您需要花时间使用默认包含搜索路径进行修改,或者只是提供要包含的标头的更明确的路径。我能够在Windows XP / 32和以前安装的Qt 4.6上使用Code :: Blocks 10.05(带有捆绑的gcc)重现您的问题。这是我能够构建的代码略有变化的版本,没有任何问题:

#include <QApplication>
#include <QFont>
#include <QPushButton>
#include <QtCore/QTimer>

int main(int argc, char* argv[])
{
QApplication app(argc, argv);

QPushButton quit("Quit");

quit.resize(75, 30);
quit.setFont(QFont("Times", 18, QFont::Bold));

QObject::connect(&quit, SIGNAL(clicked()), &app, SLOT(quit()));

quit.show();

return app.exec();
}

查看您的Qt安装目录。如果您遇到任何其他标头的问题,您将能够看到包含目录,以及所有标头所在的位置。看起来Code :: Blocks项目默认将QtGui目录设置为包含搜索路径,这就是为什么你不需要明确提及它包含QPushButton等等。

答案 1 :(得分:0)

Code :: Blocks只是一个IDE而不是编译器/链接器工具链,因此不能找到文件的Code :: block,你根本没有配置项目来使用它们。

“没有这样的文件或目录”是预处理器错误消息;你仍然需要告诉编译器在哪里找到你的第三方头文件。此外,在链接时,您需要告诉链接器在哪里找到库。

答案 2 :(得分:0)

每当你有#include <blah>(带角度括号<>)时,编译器会查看默认的包含路径。您需要将Qt include目录放入项目的包含路径中。我不确定在Code :: Blocks中是如何完成的。它可能在项目设置中的某个位置。