Q_Object
매크로를 사용하고 #include <QObject>
을 사용하면 동일한 효과가 있습니까? 다른 말로하면 그들은 과 동일한 두 가지 다른 방법입니까? 목적입니까?Qt-Q_OBJECT 대 #include <QObject>
감사합니다.
Q_Object
매크로를 사용하고 #include <QObject>
을 사용하면 동일한 효과가 있습니까? 다른 말로하면 그들은 과 동일한 두 가지 다른 방법입니까? 목적입니까?Qt-Q_OBJECT 대 #include <QObject>
감사합니다.
아니요 신호/슬롯을 사용하려는 것의 클래스 정의에 Q_OBJECT
이 필요합니다. 오른쪽 헤더가 포함 된에 이 추가로 필요합니다. QObject
api docs 가입일
다음 Q_OBJECT 매크로 신호는, 슬롯 또는 특성을 구현하는 모든 객체 필수 것을
통지. 파일의 메타 개체 컴파일러도 실행해야합니다. 실패가 이상한 행동을 전시 할 수 있도록 할 수있다 리드 특정 기능을 수행하기 때문에 우리는 강력하게 관계없이 실제로 신호 슬롯과 속성을 사용 여부 QObject를 모든 서브 클래스에서 이 매크로의 사용을 권장합니다.
자세한 내용과 샘플 코드는 Qt 설명서의 다양한 예제를 참조하십시오. Signals and Slots 참조는 볼 수있는 좋은 곳입니다. Object Model 참조도 확인하십시오.
아니요. QObject
에서 파생 된 클래스에이 매크로를 추가합니다. 그러나 매트가 말한 것처럼 여전히 헤더가 필요합니다! http://doc.qt.io/qt-5/qobject.html#Q_OBJECT
두 가지 목적으로 사용됩니다.
:Q_OBJECT 매크로가 자신의 신호와 슬롯을 선언하는 클래스 정의의 개인 섹션에 표시해야하며 그 Qt의 메타 오브젝트 시스템에서 제공하는 다른 서비스를 사용합니다.
신호, 슬롯 및 기타 Meta Object 기능을 사용하려면 Q_OBJECT
매크로가 있어야합니다. .
#include<QObject>
은 : 당신은 .. 클래스 QObject
에서 사용할 수있는 기능을 사용하는 예에 대한 말, QObject::connect()
을 할 수 있도록
이, qobject.h 헤더 파일을 포함하는 데 사용됩니다.
Q_OBJECT
매크로를 사용하려면 #include <QObject>
이어야합니다.
답장을 보내 주셔서 감사합니다. 가능한 경우 자세히 설명해 주시겠습니까? '신호/슬롯을 원하는 것들의 클래스 정의에 Q_OBJECT가 필요합니까? ' 감사합니다 – Simplicity
@ user588855 : 정보에 대한 자세한 내용과 링크가 추가되었습니다. – Mat
Mat가 링크 된 Q_Object의 설명서를 읽어보십시오. 이 문서에는 Q_OBJECT 매크로가 사용되는 방법을 보여주는 샘플 클래스가 나열되어 있습니다. – CadentOrange