2016-11-22 1 views
0

나는 신호-슬롯에 관한 질문이 있습니다 클래스 CL_A의 변수 a, b, c를 설정하는 CL_A의 값. 이를 위해 각 세터마다 신호 슬롯 연결을 설정했습니다. 이제 내 질문은 :Qt는 C++ 더 나은 방법은

신호 슬롯 연결 (각 방법마다 하나씩) 대신에 더 나은 방법이 있습니까?

+2

당신은 B''에 A''에 대한 포인터를 전달하고 직접 물건을 호출 할 수 있습니다 스티븐 C. DEWHURST "C++ 둘점"에서 볼을 시도하는 것이 좋습니다. 어쨌든 내부 객체가 외부 객체에 무언가를 설정해야하는 상황은 언뜻 보면 잘못된 디자인처럼 보입니다. – SingerOfTheFall

+0

'CL_A' 멤버 변수는 같은 유형의 signals-slots에 의해 설정하려고합니까 (예제에서와 같이)? – Tomas

+3

이것은 많은 문맥에 달려 있습니다. 동시에 모든 값을 설정하면 각 값을 독립적으로 전달하는 대신 구조체를 전달할 수 있습니다. 그러나 질문을 편집하고 실제로하려고하는 것에 대한 세부 사항을 입력해야합니다. – thuga

답변

-1

이 클래스들은 사실 QObject 자손이거나 신호 슬롯을 전혀 사용할 수 없다고 가정합니다. "더 나은"방법은 실제로하고 싶은 일에 달려 있습니다. 그것은 스레드 안전해야하며 다른 객체는 전역이거나 다른 스레드에서 사용되는 객체입니까? 비동기일까요? 대답이 '예'인 경우 사용중인 라이브러리에 유효한 신호 또는 기타 동기화 방법이 필요합니다.

QSignalMapper (How works QSignalMapper?)는 여러 이벤트를 처리 할 수있는 범용 단일 처리기를 만들 수 있지만 필드가 일부 튜플 또는 배열이 아닌 경우 해당 이벤트를 일반화하는 방법은 무엇입니까?

다른 C++ 패턴을 사용할 수 있습니다. 코드가 시간에 민감하지 않고 지원하기 쉬운 코드를 만드는 것이면 필드 이름을 주소로 매핑하는 클래스를 만드는 것이 좋습니다.

cl_b [ "Speed "] = 값;

나는