나는 오랫동안 Qt 프로그래머로 일해 왔으며 Qt의 일반적인 기능 대부분을 잘 알고 있습니다. 나는 연결 문이 신호를 런타임에 슬롯에 연결하는 방법에 대해 여전히 혼란 스럽다. 기본적으로 컴파일시에 어떤 일이 일어나고 런타임에는 어떻게되는지 알고 싶습니다.QT에서 신호와 슬롯을 어떻게 연결합니까?
컴파일 시간 : 메타 오브젝트 컴파일러는 추가 cpp 파일 (Q_OBJECT가 포함 된 각 클래스에 하나씩)에 신호를 구현하는 코드를 생성합니다.
런타임 : 신호가 슬롯에 매핑되고 슬롯이 실행됩니까? 이것은 내가 분명하지 않은 부분입니다 ... 신호와 슬롯은 신호/슬롯 이름의 문자열 표현으로 확장되는 매크로입니다.이 코드와 메타 객체는 런타임에 슬롯에 대한 호출을 매핑하는 데 어떻게 도움이됩니까? 자세한 내용은 ... 주시면 감사하겠습니다
편집 : 이 링크의 문서와 함께 (... 당신은 피투성이의 세부 사항에 관심이있는 경우에만) .. 당신에게 http://dev.libqxt.org/libqxt/wiki/Meta_Object_Format
커플이 더 나은 아이디어를 줄 것이다 QMetaObject 및 모든 것이 명확 해져야합니다.
감사합니다. 대답에 대한 ... 나는 moc 파일에서 생성 된 qt_metacall 함수를 볼 수 있습니다 .... 그러나 소스 객체의 moc 파일에는 슬롯에 대한 정보 만이 있습니다 ... 어떻게 슬롯을 찾을 수 있습니까? – maxpayne
내가 이해하면 확실하지 않습니다. 슬롯과 신호는 MOC 파일에서 생성 된 정적 메타 객체를 통해 등록됩니다. MOC 파일에 슬롯이 나열되어 있지 않습니까? 그래야지. 신호와 슬롯이 모두 하나의 힙에 있기 때문에 혼란 스러울 수 있습니다. 내가 이해할 수 있도록 좀 더 철저히 설명해 주시겠습니까? – 0xbaadf00d