2011-04-14 5 views
4

Q_Object 매크로를 사용하고 #include <QObject>을 사용하면 동일한 효과가 있습니까? 다른 말로하면 그들은 과 동일한 두 가지 다른 방법입니까? 목적입니까?Qt-Q_OBJECT 대 #include <QObject>

감사합니다.

답변

10

아니요 신호/슬롯을 사용하려는 것의 클래스 정의에 Q_OBJECT이 필요합니다. 오른쪽 헤더가 포함 된에 이 추가로 필요합니다. QObject api docs 가입일

다음 Q_OBJECT 매크로 신호는, 슬롯 또는 특성을 구현하는 모든 객체 필수 것을

통지. 파일의 메타 개체 컴파일러도 실행해야합니다. 실패가 이상한 행동을 전시 할 수 있도록 할 수있다 리드 특정 기능을 수행하기 때문에 우리는 강력하게 관계없이 실제로 신호 슬롯과 속성을 사용 여부 QObject를 모든 서브 클래스에서 이 매크로의 사용을 권장합니다.

자세한 내용과 샘플 코드는 Qt 설명서의 다양한 예제를 참조하십시오. Signals and Slots 참조는 볼 수있는 좋은 곳입니다. Object Model 참조도 확인하십시오.

+0

답장을 보내 주셔서 감사합니다. 가능한 경우 자세히 설명해 주시겠습니까? '신호/슬롯을 원하는 것들의 클래스 정의에 Q_OBJECT가 필요합니까? ' 감사합니다 – Simplicity

+0

@ user588855 : 정보에 대한 자세한 내용과 링크가 추가되었습니다. – Mat

+1

Mat가 링크 된 Q_Object의 설명서를 읽어보십시오. 이 문서에는 Q_OBJECT 매크로가 사용되는 방법을 보여주는 샘플 클래스가 나열되어 있습니다. – CadentOrange

3

두 가지 목적으로 사용됩니다.

Q_OBJECT

:

Q_OBJECT 매크로가 자신의 신호와 슬롯을 선언하는 클래스 정의의 개인 섹션에 표시해야하며 그 Qt의 메타 오브젝트 시스템에서 제공하는 다른 서비스를 사용합니다.

신호, 슬롯 및 기타 Meta Object 기능을 사용하려면 Q_OBJECT 매크로가 있어야합니다. .

#include<QObject>은 : 당신은 .. 클래스 QObject에서 사용할 수있는 기능을 사용하는 예에 대한 말, QObject::connect()을 할 수 있도록

이, qobject.h 헤더 파일을 포함하는 데 사용됩니다.

Q_OBJECT 매크로를 사용하려면 #include <QObject>이어야합니다.

관련 문제