QT에서 Gui 스레드와 QTcpSocket 스레드를 만들었습니다 .QTcpSocket 스레드에서 Gui 스레드로 데이터
에 액세스하려고합니다. 해결 방법은 무엇입니까?
일부 전역 변수를 선언해야합니까?
Qt의 전역 변수 선언
답변
가장 쉬운 방법은 신호 슬롯 연결을 통해 통신하는 것입니다. 각 스레드에는 하나의 QObject가 있습니다. 전송 객체에는 다른 스레드에서 수신 객체의 슬롯에 연결된 신호가 있습니다.
이 설정에서는 연결의 양쪽 끝에있는 개체가 올바른 스레드로 살도록 구성되어 있는지 확인합니다. QObject::moveToThread()
으로 전화해야 할 수도 있습니다. QObject에는 현재 스레드를 얻을 수있는 속성도 있습니다 (이 경우 디버깅 목적으로).
그런 다음 평소처럼 신호 슬롯 연결을 설정하십시오. 두 객체가 서로 다른 스레드에 있기 때문에 신호가 트리거되면 슬롯 호출 이벤트가 수신 플래그의 이벤트 루프에 배치됩니다. 이것은 Qt 문서에서 설명합니다. Qt::QueuedConnection
을 찾으십시오.
많이 고마워요. 저를 아주 많이 도와줍니다. – Jayeeta
QTcpSocket은 GUI 스레드에서 생성됩니다.
그래서 그 시점에서 GUI 스레드는 소켓 객체에 대한 포인터를 가지고 있습니다.
그러면 gui의 슬롯과 소켓의 신호 사이에 연결이 생성됩니다.
소켓 개체에서 데이터를 가져올 때마다 gui 스레드가 데이터를 포함하는 신호를 간단히 내 보냅니다.
신호/슬롯을 통해 QString, QByteArray (또는 원시 포인터)와 같은 Qt 유형을 매우 효율적으로 전달할 수 있습니다. 스레드 간의 신호도 자동으로 처리되는 경우 세부 정보입니다.
고마워요. .. 저에게 도움이 .. – Jayeeta
- 1. Qt의 전역 변수, 방법?
- 2. VB에서 전역 변수 선언
- 3. 전역 변수 다중 선언
- 4. MATLAB에서 전역 변수 선언
- 5. 전역 변수 선언 문제
- 6. 오라클 트리거 : 선언 전역 변수
- 7. 모든 활동에 사용할 전역 변수 선언
- 8. 전역 변수 선언 위치? .h or.m?
- 9. PHP 전역 선언
- 10. C에서 전역 유니온 선언
- 11. JavaScript 전역 변수 문제
- 12. Javascript 로컬 변수 선언
- 13. C++ 전역 변수 수명
- 14. 변수 전역 변수?
- 15. 변수 선언?
- 16. 변수 선언
- 17. 다시 선언 IE에서 자바 스크립트 전역 변수 재정의 이전 값
- 18. 암 어셈블리에서 C로 선언 된 전역 변수 사용
- 19. 전역 변수
- 20. 전역 변수 ++
- 21. backbone.js에서 전역 변수 사용
- 22. Drupal 7 전역 $ 사용자 변수
- 23. 액션 스크립트에서 전역 변수를 선언 하시겠습니까?
- 24. actionscript 2.0의 전역 변수 읽기
- 25. JS 전역 변수와 지역 변수
- 26. 전역 이름 공간에서 변수 사용
- 27. Django의 전역 변수/변수 캐싱
- 28. 스택 변수 나 함수의 선언
- 29. SQL 서버의 영구 변수 및 전역 변수
- 30. ASP.Net 전역/페이지 범위 변수
귀하는 답변이 도움이되었다고 말씀하셨습니다. 후속 방문객들이 토론을 할 수 있도록 가장 유용한 답변을 수락 된 것으로 표시해 주시겠습니까? 답변의 왼쪽에있는 투표 버튼 바로 아래에있는 외곽선을 클릭하여 답변을 수락 할 수 있습니다. –