Проблема, включая заголовки Qt - PullRequest
2 голосов
/ 05 июля 2011

В Qt некоторые заголовки включены через более типичные

#include "QtCore/qtheader.h"

Но иногда он использует такую ​​запись:

#include <QString>

Я не уверен, в чем разница или почемуэто сделано.Несмотря на это, у меня возникают проблемы, включая заголовки, которые сами используют последнее обозначение.Есть идеи?

Спасибо.

Ответы [ 4 ]

4 голосов
/ 06 июля 2011

Это странное поведение, которое вы описываете. Делая

#include <QString>

должно "просто работать", так как это в значительной степени стандартный способ сделать это.

Единственное, о чем я могу думать, это то, что вы перезаписали переменную QT в вашем файле проекта. Например, если вы делаете

QT=opengl

чтобы получить модуль OpenGL вместо

QT+=opengl

тогда вы получите поведение, которое вы описываете.

1 голос
/ 06 июля 2011

Поскольку вы дали мало информации об ошибке и о том, какую среду разработки вы используете, может возникнуть следующая проблема, если вы не используете файлы .pro. Если вы на самом деле используете файлы .pro, это может быть неуместно для вас:

Если вы используете, например, Visual Studio, а не файлы проекта Qt, и вы включаете только $ (QTDIR) \ include, тогда вам придется написать

#include <QtCore/QObject>
#include <QtGui/QWidget>

и так далее. Это связано с тем, что каталог включения Qt содержит файлы в подпапках "QtCore", "QtGui" и т. Д.

Если вы не хотите добавлять QtCore или QtGui или что-либо еще в ваши включения, вам нужно будет включить $ (QTDIR) \ include \ QtCore, $ (QTDIR) \ include \ QtGui и т. Д.

(Обратите внимание, что я не уверен на 100% относительно пути включения, не могу найти его на этом компьютере)

0 голосов
/ 05 июля 2011

Я не знаю, что вызывает у вас проблемы, так как вы не указываете достаточно подробностей.Во всяком случае, в C ++, когда вы включаете с помощью <>, вы имеете в виду, что вы хотите искать по пути включения.Вы можете указать путь включения и добавить в него некоторые каталоги в Qt, добавив:

INCLUDEPATH += ...

в файл проекта.Если вы используете двойные кавычки, вы попросите добавить текущую исходную директорию к пути включения.

Итак, вы увидите:

#include <QString>

, потому что в вашей системепуть включения должен быть файл с именем QString.Внутри него действительно есть:

#include "qstring.h"

, который обычно находится в каталоге QtCore.

0 голосов
/ 05 июля 2011

В C и C ++, когда вы используете двойные кавычки, это означает: Искать в том же каталоге, что и этот файл.Когда вы используете <>, это означает: Поиск путей включения.

С помощью gcc вы можете добавить пути включения с параметром командной строки -I.

Используете ли вы Qt Creator и qmake?Если да, отредактируйте .pro, как в этом вопросе / ответе: Как добавить путь включения в Qt Creator?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...