2013-05-17 2 views
0

단추 및 로그 도구로 양식을 구현해야하며 단추를 누르면 다른 스레드에서 긴 작업이 시작되어야합니다.Qt : 다른 스레드의 이벤트 루프에서 긴 작업을 수행하는 것이 맞습니까

프로세스 세부 정보는 로그에 표시되어야합니다.

두 작업을 동시에 시작해서는 안됩니다.

내가 생각 해요 방법 : 자신의 이벤트 루프합니다 (QThread의 생성자 물론 전화 moveToThread(this))와 QThread의 서브 클래스를 생성하고,이 스레드의 슬롯 doLongJob()QButton의 신호를 연결합니다.

소리가 좋은가요? 아니면 일반적으로 잘못 되었나요? 다른 방법 : 말하자면, 사용자가 버튼을 누를 때마다 새 스레드를 생성하십시오. 더 나빠질 것 같습니다.

아주 일반적인 일을하는 몇 가지 모범 사례가 있습니까? 제게 제안 해주세요.

+2

일반적으로 [QThread를 하위 클래스로 만들고 싶지 않습니다] (http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-fulplating/) , 그러나 그것 이외의 신호와 슬롯으로 물건을 연결하는 것은 괜찮습니다. – Bart

+0

@Bart, QThread를 올바르게 사용하는 방법에 대한 내 눈을 열어 주셔서 감사합니다. 나는 Qt가 오도 된 오해의 소지가있는 것처럼 잘 구성된 프레임 워크를 꽤 상상하게됩니다. 그리고 실제로, 나는 QThread의 하위 클래스들로 많은 예제들을 보았습니다. –

+0

'QThread'를 서브 클래 싱하는 것은 세상의 끝이 아니지만 메모리 관리가 더 어렵고, 당신이해야 할 점이 많이 있습니다. 인식. – phyatt

답변

0

Bard는 이미 의견에 대답했으며, 나는 그에게 대답을 똑같이 쓰도록 두 번 질문했지만, 그는 정말로 원하지 않는다고 생각합니다.

그래서 나는 대답하지 않은 질문을 없애기 위해 7 개월 이상 기다리는 것이 지겨워서 스스로해야합니다. 일반적으로 do not want to subclass QThread

당신, 그러나 그 이외의 신호와 슬롯 물건을 넣었 그냥 괜찮 :

대답이다.

관련 문제