2013-04-07 2 views
0

주에서는 작성한 스레드에 QApplication을 작성한 다음 사용자의 명령에 따라 (cin에서) 콜백을 사용하려고합니다. QApplication 인스턴스 스레드에서 생성했습니다. QApllication의 생성은 'StartQtThread'라고하는 workerthread에서 발생하며 명령을받는 주요 함수는 주 스레드입니다.Qapplication - Windows에서 스레드로 이동이 작동하지 않습니다.

제 문제는 메인 스레드의 제 명령이 qapplication에서 작동하지 않는다는 것입니다. 예 : 사용자가 'z'를 입력하면 내 QApplication의지도에서 확대 할 수 없습니다. 버스가 나올 때마다 아무 일도 일어나지 않아. 'StartQtThread'스레드에서 내 확대 기능을 사용하려했으나 작동합니다.

주 스레드에서 'moveToThread (qApp-> thread())'함수를 사용하려고했지만 현재 스레드가 변경되지 않았습니다.

누구든지 어떻게 변경할 수 있습니까?

+0

GUI 개체를 다른 스레드로 이동할 수 없습니다. – drescherjm

+0

덕분에 @drescherjm하지만 그건별로 이해가 안돼 .. 내가 원하는 건 슬롯에 triger가 아닌 GUI에서 온 것입니다. 정말 불가능한가요? – kakush

+0

왜 전에 말하지 않았습니까? 제 3 자 라이브러리를 사용할 수 있습니까? 도움에 따르면, qxt의'QxtStdio'는 당신이 필요로하는 것과 정확히 일치합니다. 링크 : http://dev.libqxt.org/libqxt/wiki/Home – Amartel

답변

1

thread->moveToThread(obj) 이동 스레드 스레드에 OBJ 개체. 코드 moveToThread(qApp->thread())은 주 스레드의 개체를 다른 스레드로 이동시킵니다 (다소 이상합니다). GUI는 메인 스레드에서만 작동 할 수 있습니다.

+0

감사합니다 @ Armartel하지만이 시도 .. 작동하지 않았다. – kakush

관련 문제