Qt는 시그널과 슬롯사이에 사용할 수 있는 연결 종류를 결정할 수 있다. 이것은 특정 시그널을 즉시 발생할지 아니면 나중에 발생하기 위해 대기 여부를 결정한다. 멀티스레드 환경에서는 적합한 이벤트 처리를 위해 시그널 슬롯 타입을 결정해야 하는 경우가 있다.
아래에 이와 관련된 타입과 설명이다.
|
Constant |
Value |
Description |
|
Qt::AutoConnection |
0 |
디폴트 연결 타입이다. 만약 시그널이 같은 스레드에서 발생하면 시그널은 DirectConnection으로 처리되고 다른 쓰레드에서 발생되면 QueuedConnection으로 처리된다. 이것은 시그널이 발생될때 결정된다. |
|
Qt::DirectConnection |
1 |
신호가 발생 될 때 슬롯함수가 즉시 호출된다. 슬롯은 시그널이 방출된 스레드에서 실행된다. |
|
Qt::QueuedConnection |
2 |
슬롯의 스레드 이벤트 루프 컨트롤이 반환 될 때 호출된다. 슬롯은 수신된 스레드에서 실행다. |
|
Qt::BlockingQueuedConnection |
3 |
Qt::QueuedConnection과 같은데 슬롯이 반환 될 때까지 송신한 스레드가 Blocking된다. 슬롯이 송신한 쓰레드에서 도는 경우는 사용하지 말아야한다. 그렇지 않으면 교착상태가 된다. |
|
Qt::UniqueConnection |
0x80 |
이 OR비트 연산을 사용하여 위의 연결 형식 중 하나를 함께 결합할 수 있는 플래그이다. 연결이 이미 존재 할때 Qt::UniqueConnection을 설정 하면 연결은 실패 한다. |
참고 : http://doc.qt.io/qt-5/qt.html#ConnectionType-enum