2013-07-21 1 views
2

몇 가지 클래스가 있습니다 : 클래스 A - 최상위 클래스, 클래스 B 및 클래스 C는 클래스 A 생성자로 초기화됩니다. 클래스 B 생성자는 클래스 B1로 초기화되고 클래스 C 생성자는 클래스 C1으로 초기화됩니다. C1 오브젝트와 B1 오브젝트는 서로를 볼 수 없습니다.Qt에서 몇 가지 클래스 객체를 통해 신호를 내보내는 방법은 무엇입니까?

C1 클래스에서 B1 클래스로 신호를 보낼 때마다 C1과 C, C 및 B, 결국 B와 B1을 연결해야합니다. 그래서 내 프로그램이 C1 클래스 객체에서 신호를 내보낼 때마다 C 클래스 객체를 B 객체로 보낸 다음 B1 객체로 보냅니다. (이미지에서) 올바른 Qt Way입니까? 아니면 더 좋은 방법이 있을까요?

enter image description here

답변

2

당신도, 클래스 C에 C1과 클래스 B와 유사한 인터페이스를 반환하는 인터페이스를 추가 할 수 있습니다. 그런 다음 클래스 C와 B를 생성 한 후 클래스 A는 C1과 B1을 요청하고 C1의 신호를 B1의 슬롯에 연결할 수 있습니다.

또는 이러한 종류의 사례가 많고 C1 및 B1 클래스를 A에 노출시키지 않으려면 고유 한 신호 메커니즘을 만들 수 있습니다. 클래스가 수신자로 등록 할 수 있고 클래스가 메시지를 보낼 수있는 곳의 "우체국" 이 경우 B1 클래스는 수신자로 등록되고 C1 클래스는 메시지를 보냅니다. C1과 B1은 서로에 대해 알지 못합니다. 우체국 클래스는 B1의 메시지를 B1에 보냅니다. Qt의 신호와 슬롯을 사용하여 이러한 우체국 클래스를 구현할 수도 있습니다.

+0

"우체국"아이디어에 감사드립니다. –

관련 문제