2011-05-03 3 views
1

이 링크 : http://doc.trolltech.com/4.5/moc.html#mocQ_OBJECT 매크로 및 메타 오브젝트 코드

상무부 도구는 C++ 헤더 파일을 읽고 말한다. 매크로가 Q_OBJECT 매크로를 포함하는 하나 이상의 클래스를 찾으면 해당 클래스의 Meta Object 코드를 포함하는 C++ 소스 파일 을 생성합니다.

메타 오브젝트 코드는 무엇입니까?

편집

1이 어떻게이 Q_OBJECT를 작성해야하는 클래스에 알? 하나의 예가 신호와 슬롯이고, 다른 경우는 사용해야하는 경우입니다.

답변

2

메타 개체는 기존 개체를 새로 만들거나 조작하여 프로그래밍 언어를 향상시킵니다. 그들은 언어 자체가 실제로 가지고 있지 않은 기능을 제공합니다. 메타 오브젝트는 컴파일 시간 또는 런타임으로 해석됩니다. Qt와 C++에서 컴파일시 Meta Object Compiler (moc)에 의해 수행됩니다.

예제는 신호/슬롯 개념의 사용법입니다.

+0

답해 주셔서 감사합니다. Donotalo의 게시물에서 내 의견을 참조하십시오. –

+1

일이 어떻게 작동하는지 항상 잘 알고 있습니다. 코드 밑에서 무슨 일이 일어나고 있는지 신경 쓰지 않는 프로그래머는 더 나쁜 프로그래머입니다. 그러나 예, MOC는 스스로 구현하지 않아도되는 funtionalities를 사용할 수있게하므로, 먼저 작업을 수행하는 대신 올바르게 사용하는 데 집중할 수 있습니다. – Exa

4

Qt internals and Reversing 문서를 읽고 Qt 및 해당 moc 컴파일러 (메타 objet 컴파일러)에 대한 심층적 인 지식을 얻을 수 있습니다. 요약하면 Qt의 moc 컴파일러는 신호/슬롯 메커니즘과 같은 클래스에 추가 정보를 추가하기 위해 메타 객체를 만듭니다.

+0

링크를 제공해 주셔서 감사합니다. 그러나 나는 단지 "메타 - 오브젝트"의 의미를 설명하는 2,3 라인을 원했다. –

1

Qt 환경의 메타 오브젝트 코드는 C++ 소스의 확장 버전 인 C++ 소스 파일입니다 Q_OBJECT (및/또는 다른 관련 매크로)를 넣은 파일. 메타 객체 코드는 신호와 슬롯 메커니즘이 작동하도록 구현과 플러스 (메타) 코드를가집니다.

+0

이것이 내 사업이 아니므로 Q_OBJECT의 작동 방식을 고민하지 않아도된다는 의미입니까? –

+0

@anisha, 물론 궁금하다면 더 깊이 파고들 수 있습니다. Q_OBJECT가 작동하는 방법에 대해 신경 쓰지 않고도 Qt를 배우고 사용할 수 있습니다. 그러나 Q_OBJECT를 사용할시기와 이유를 알아야합니다. – Donotalo

+0

원칙적으로 그렇습니다. 그러나 "invokeMethod"를 사용하려면 QObject 및 QMetaObject의 기본 사항을 이해하는 것이 좋습니다. – hmuelner

1

메타 오브젝트는 오브젝트의 이름 및 신호 및 슬롯의 텍스트 설명과 같은 오브젝트에 대한 메타 정보를 포함합니다. 이렇게하면 "이름"으로 신호를 호출 할 수 있습니다. QMetaObjectarticle에 대한 설명서를 참조하십시오.