0

到目前为止,我一直在控制台中工作,几天前决定尝试 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 个警告 ===|

我现在不知道有多少类不能正常工作,这只是其中的一部分。

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

谢谢

4

3 回答 3

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 等。

于 2010-06-21T22:23:59.360 回答
0

Code::Blocks 只是一个 IDE 而不是 Compiler/Linker 工具链,所以不是 Code::blocks 找不到文件,你只是没有配置你的项目来使用它们。

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

于 2010-06-21T21:54:47.887 回答
0

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

于 2010-06-21T21:56:13.030 回答