2009-09-29 4 views
4

나는 항상 S.O.L.I.D 원칙을 적용하려고합니다. Qt 툴킷을 정말 좋아하지만, 항상 single inheritance rule으로 항상 힘들어합니다.Qt의 인터페이스 분리

여러 상속을 사용하는 경우, MOC는 처음 클래스가 QObject를의 하위 클래스 상속 있다고 가정합니다. 또한 상속 된 첫 번째 클래스 만 QObject인지 확인하십시오.

어떻게 당신은 QObject를 규칙에서 단일 상속을 결합하고 인터페이스 독방 원리 않습니다.
신호와 슬롯이있는 인터페이스를 정의하고 싶지만이 작업을 수행 할 수 없습니다.

이 단점을 어떻게 극복합니까?

답변

5

신호와 슬롯은 특별한 행동을하는 기능에 지나지 않습니다. 따라서 을 사용하여 인터페이스를 만들 수 있습니다.

복잡한 사례에 대한 전체적인 설명과 해결 방법은 Qt Quarterly #15을 참조하십시오.

+0

링크 된 기사에서 인터페이스에 대한 qobject_cast가 수행되지만 인터페이스는 QObject가 아닙니다. 대신 dynamic_cast 여야합니까? –

1

Qt의 신호/슬롯 메커니즘을 사용하면 쉽게 해결할 수 있다고 생각하지 않습니다. boost :: signals 또는 sigc 라이브러리를 살펴볼 수도 있는데, 시그널 라이브러리와 슬롯은 신호와 슬롯을 둘 수있는 곳에서 더 융통성이있다. 라이브러리와 Qt의 signalsslots 매크로와의 가능한 네임 스페이스 충돌을 알고 있어야합니다.