2009-08-07 3 views

답변

41

Qt는 V4.5 이전 : the documentation here에서 알 수있는 어떠한 순서가 정의된다 : 몇몇 슬롯은 하나 개의 신호에 연결되어

경우, 슬롯은 하나씩 실행되는 것 임의의 순서로, 신호가 방출 될 때.

편집 : 4.6 이후 버전은 더 이상 적용되지 않습니다. 이제 슬롯은 연결된 순서대로 실행됩니다. the current documentation 관련 단락 : 신호가 방출 될 때

몇몇 슬롯은 하나 개의 신호에 연결되어있는 경우

, 슬롯이 서로 연결되어있는 순서대로 하나씩 실행한다

+1

@Hossein QT 버전 4.6까지 내 대답은 정확했습니다. 질문의 날짜 (및 제 대답)를 보면 질문을했을 때 정답 이었음을 알 수 있습니다. 야로 슬라브의 대답은 1 년이 넘었습니다. – sepp2k

+1

오케이, 죄송합니다. 귀하의 게시물에 대해 과소 평가하지 않았다. 이 질문은 내가 한 Google 검색의 첫 번째 결과로 등장했기 때문에 더 많은 독자가 혼란스러워하는 것을 막고 싶었습니다. – Hossein

+0

다른 스레드에서이 사실을 확인하려면 대기열 연결을 사용해야합니다. 그냥 말해. – smsware

2

순서는 정의되지 않았지만 지금까지 모든 Qt 버전에서 이 사용 된 경우를 제외하고는 Qt::QueuedConnection을 사용합니다.이 경우 emit이 반환 될 때 슬롯이 모두 실행되었다고 보장 할 수 없습니다. 그러나 주문에 의존하는 것은 여전히 ​​바람직하지 않습니다.

9

Qt는 문서에 따르면

여러 슬롯 하나 개 신호에 연결되어있는 경우

, 슬롯은 하나가 다른 후, 순서대로 서로 연결되어 실행될 신호 인 방출. 실행됩니다 슬롯이 두 신호/슬롯 연결의 정신을 패배로, 나쁜, 나쁜 생각과 당신이 할 경우 원치 않는 행동 활짝 열려 당신을 잎 주문 무엇에 의존

http://qt-project.org/doc/qt-4.8/signalsandslots.html

+2

잘못이 아닙니다. Qt 버전에 따라 다릅니다. –

0

신호 & 슬롯의 프로그램 연결.