Codelite 5.1 не может найти & lt; QString & gt;

Использование CodeLite 5.1 в Ubuntu 12.10:

Создано минимальное приложение QTGui. Построен и побежал хорошо.

#include <QApplication>
#include <QButton>

были вставлены мастером в файл main.cpp — без проблем. Я добавил:

#include <QString>

согласно документации QT, и обработчик говорит мне, что не может найти QString. Я проверил параметр включения для проектов —

../qt4

а также

../qt4/qt4GUI

там правильно. Я старался:

#include <qt4/QString>

с разными перестановками регистров — все не поехали.

В чем дело? (Публикация этого также на форуме CodeLite).

0

Решение

В то время как QApplication а также QButton являются частью модуля 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, так что если вы включаете класс, который использует QString (QApplication один пример), он работает без добавления другого включения.

1

Другие решения

Других решений пока нет …