위젯 (mainWidget)과 다른 위젯 (childWidget)이 있습니다. 그 위젯입니다.Qt : connect 문을 어디에 둘까요?
내가 원하는 :
connect(childWidget, SIGNAL(somethingHappened(...)), mainWidget, SLOT(handleIt(...));
내 질문은 : mainWidget 또는 childWidget 한 장소 연결 문을합니까?
나는 mainWidget의 생성자에서 childWidget을 만들고 다음 줄에 연결 명령문 배치하면 작동합니다. 그러나 childWidget이 생성되면 무언가를 수행 한 다음
mainWidget이 성공했다고 알립니다. 문이 신호를내는 함수 (childWidget의) 다음에 오는 경우에만 상황이 발생할 수 있습니다. 나는 childWidget의 생성자에서 연결 문을 배치하면,
문제는 부모의
슬롯에 대해 아무것도 모르는 것입니다. childWidget이 mainWidget을 상속 받도록 만들면
슬롯을 알 수 있지만 이는 나에게 나쁜 해결책이라고 느낍니다. 어쨌든 을 작동시키지 못했습니다. 이것을 할 수있는 적절한 방법이있을 것입니다 - 여전히 저는 입니다.
저는 Qt 프로그래밍을 처음 접했습니다. 사전에 도움을 주셔서 감사합니다.
답장을 보내 주셔서 감사합니다. 나는 함수가 생성자로부터 호출되어 데이터베이스 커넥션을 만들거나 다른 일을하고 mainWidget에 성공했다고 생각할 수 있다고 생각했다. 건설이 완료되기 전에 그것은 아직도있을 것입니다. –
방출 할 때 신호는 발송 전용으로 예약됩니다. 이벤트 루프가 계속 될 때까지 슬롯이 호출되지 않습니다. 그러므로 당신이 생성자에서'QApplication :: processEvents()'를 호출하지 않는다면 (매우 나쁜 생각이다), 생성자로부터 안전하게 신호를 방출 할 수있다. –
멋진데, 신호와 슬롯이 같은 슬롯에 있고 연결 유형이 'DirectConnection'인 경우 직접 함수 호출과 같이 작동한다고 생각했습니다. 또한, 이벤트 루프가 생성자 호출에서 차단되었음을 알지 못했습니다. –