2012-08-11 2 views
1

Qt Creator에서 새 모바일 응용 프로그램을 만들었을 때 자동 생성 코드에서 #include <QCoreApplication> 대신 #include <QtCore/QCoreApplication>을 사용한다는 사실을 알았습니다. 똑같다.#include <QtCore/QCoreApplication> "#include <QCoreApplication>"

Qt Creator 자체가 그 작업을 수행하므로 권장되는 규칙이라고 생각합니다. 그러나 이것이 이유가 무엇인지, 누군가 대신 #include <QtCore/QCoreApplication>을 사용하는 요지를 설명 할 수 있습니까?

+0

이것은 Qt와는 아무런 관련이 없습니다. 코드 파일의 경로 포함에 얼마나 깊이 관여해야하는지에 대한 질문 일뿐입니다. 나는 "추천 된 대회"가 있다고 생각하지 않는다. 당신은 당신의 환경에서 어떤 의미를 지니고 있습니다. –

답변

3

는 규칙을 사용하여 여러 이유가 있습니다 : -

  1. 경로는 컴파일러가 QtCore의 디렉토리 레벨에에 포함 된 경우는 거기에서 파일 QCoreApplication을 포함 추적합니다. 같은 디렉토리에있는 기존 Qt는 여러 버전이 있기 때문에
  2. , 모호성을 삭제 컨벤션를 사용하는 것이 바람직하다. (Qt3 및 기타 QT4에 속하는 두 QCoreApplication 하나는 컴파일러를 오해 것이기 때문에)

내가 두가 디렉토리는/usr//

  • QtCore
  • Qt는

두 사람이 포함 QCoreApplication에서 그들 안에.

1

양식에서 생성 된 코드의 경우 "디자이너"탭 옵션에서 "# include-directive에 Qt 모듈 이름 사용"옵션을 변경할 수 있습니다.

모듈을 지정할 때 조금 있지만 때로는 성가신 문제가 있음을 발견했습니다. 기본적으로 qmake는 경로를 포함하도록 /path/to/qt/sdk/include을 추가합니다. 이것은 예를 들어 프로젝트 파일에 당신이

QT -= gui 

이 있더라도

#include <QtGui/QWidget> 

을 할 수 있다는 것을 의미한다 그런 다음 컴파일은 잘 간다하지만 링커 이후 QtGui4 라이브러리하지 않습니다, 당신이 화가 될 것입니다 연결을 위해 선택하십시오. 당신이

#include <QWidget> 

을 한 경우

컴파일 대신 실패합니다.

+0

모듈을 지정하지 않은 또 다른 이유는 Qt5 마이그레이션과 QtGui와 QtWidget입니다. 모듈을 지정하지 않으면 프로젝트를 둘 다 컴파일 할 수 있습니다. – sashoalm