사용자 도구

사이트 도구


qt:signalsandslots

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판이전 판
다음 판
이전 판
qt:signalsandslots [2014/02/19 06:21] changwooqt:signalsandslots [2014/10/09 21:24] (현재) – 바깥 편집 127.0.0.1
줄 49: 줄 49:
  
  
 +===== 예제: signal_emitter, signal_receiver =====
 +[[.:HelloWorld]] 예제의 signal_emitter를 약간 수정한 시그널 주고 받기 예제를 기록해 본다.
  
 +우선 signal_emitter에 시그널을 추가한다.
 +<code cpp>
 +void send(const int);
 +</code cpp>
  
 +signal_receiver 클래스를 만든다. 물론 QObject를 상속 받아야 한다. 그리고 다음 함수를 슬롯으로 등록한다.
 +<code cpp>
 +void receive(const int value);
 +
 +void signal_receiver::receive(const int value)
 +{
 +  std::cout << "received: " << value << std::endl;
 +}
 +</code>
 +
 +main 함수에서 시그널과 슬롯을 연결한다.
 +<code cpp>
 +// it is assigned at stack. You must declare after the parent.
 +signal_receiver receiver(&app);
 +
 +// emitter-receiver connection
 +QObject::connect(emitter, &signal_emitter::send,
 +                 &receiver, &signal_receiver::receive);
 +</code>
 +
 +signal_emitter의 launch() 함수에 시그널을 보내는 코드를 추가한다.
 +<code cpp>
 +for(int i = 0; i < 10; ++i) {
 +  emit send(i);
 +}
 +</code>
 +
 +결과
 +<code>
 +Hello, world!
 +received: 0
 +received: 1
 +received: 2
 +received: 3
 +received: 4
 +received: 5
 +received: 6
 +received: 7
 +received: 8
 +received: 9
 +</code>
 +변경된 소스는 {{:qt:signal_slots_2.tar.gz|여기}}서 다운로드 가능하다.
 +
 +===== 시그널은 오버로딩 가능할까? =====
 +출처: http://stackoverflow.com/a/16795664
 +
 +우격다짐으로 가능한 것 같아 보이지만, 하지 말자. 좋지 않다.
qt/signalsandslots.1392790866.txt.gz · 마지막으로 수정됨: 2014/10/09 21:23 (바깥 편집)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki