(C ++) Code :: blocks не распознает классы QT4 - PullRequest
0 голосов
/ 22 июня 2010

Пока я работал в консоли и несколько дней назад решил попробовать графический интерфейс QT.Я скачал QT SDK, установил его, отрегулировал местоположение QT и настроил переменную среды PATH -> в соответствии с инструкциями на сайте.

Я открыл новый проект Qt4 в Code :: Blocks-in иказалось, что все было в порядке.По умолчанию есть пример:

#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 ]

1 голос
/ 22 июня 2010

Вам нужно либо потратить время на поиск путей поиска по умолчанию, либо просто указать более явный путь заголовка, который вы хотите включить.Я смог воспроизвести вашу проблему с Code :: Blocks 10.05 (с gcc в комплекте) в Windows XP / 32 и ранее установленной Qt 4.6.Вот слегка измененная версия вашего кода, которую я смог собрать без каких-либо проблем:

#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.Вы сможете увидеть каталог include и где находятся все заголовки, если столкнетесь с этой проблемой с другими заголовками.Похоже, проекты Code :: Blocks по умолчанию устанавливают каталог QtGui в качестве пути поиска включения, поэтому вам не нужно явно указывать его для включения QPushButton и еще много чего.

0 голосов
/ 22 июня 2010

Всякий раз, когда у вас есть #include <blah> (с угловыми скобками <>), компилятор ищет путь включения по умолчанию. Вам нужно поместить каталог включения Qt в путь включения вашего проекта. Я не уверен, как это делается в Code :: Blocks. Это наверное где-то в настройках проекта.

0 голосов
/ 22 июня 2010

Code :: Blocks - это только IDE, а не набор инструментов компилятора / компоновщика, поэтому не Code :: blocks не может найти файлы, вы просто не настроили свой проект для их использования.

«Нет такого файла или каталога» - это сообщение об ошибке препроцессора;Вы все еще должны указать компилятору, где найти сторонние заголовочные файлы.Более того, когда дело доходит до компоновки, вам нужно будет указать компоновщику, где искать библиотеки.

...