2009-11-01 1 views
4

임베디드 리눅스 용 Qt에서 복수 QApplication을 실행하는 데 어떤 문제가 있는지 이해할 수 있습니까? 메일 링리스트 스레드에 대한 몇 가지 문서를 가르쳐주십시오.다중 QApplications의 문제점

메일 링리스트의 일부 메일을 살펴본 결과, Qt에서 복수 QApplication을 실행하는 것이 설계 상 지원되지 않고 왜 필요합니까? 이것을 어떻게 더 명확하게 이해할 수 있습니까?

그러나 "Qt for Embedded Linux Architecture"문서를 읽는 동안 동시에 여러 QApplication 인스턴스를 실행해서는 안된다는 내용을 찾지 못했습니다.

2 개의 QApplication을 임베디드 리눅스 플랫폼 (PC 아님)에서 실행 중 하나와 전체 화면 모드에서 실행 중입니다. mousePress 이벤트를 수신하더라도 fullScreen 모드에있는 모드는 키보드 포커스를 얻지 못합니다. 동일한 앱이 normalMode에서 실행되는 경우 mousePress 이벤트 다음에 focusInEvent`가옵니다.

누군가가 포인터를 제공 할 수 있습니까?

+1

단일 프로세스에서 여러 개의 QApplication 인스턴스를 의미합니까, 아니면 각각 하나의 QApplication으로 여러 프로세스를 의미합니까? – rohanpm

+0

여러 QApplication 인스턴스가 여러 프로세스에 있음을 의미합니다. – beedroid

답변

2

QApplication은 싱글 톤 클래스이므로 디자인 상으로는 "싱글"입니다. 프로그램 당 하나의 QApplication 오브젝트 만 가질 수 있습니다.

그러나 Qt에서 병렬로 실행할 수있는 QApplication 클래스를 사용하는 qt 프로그램의 수에는 고유 한 제한이 없습니다. Qt를 사용하는 둘 이상의 프로그램 (그리고 아마도 QApplication 가능성이 높습니다)을 동시에 가질 수 있습니다.

아마 이것은 귀하의 메일 링리스트에서 다소 혼란 스러울 것입니다.

0

제 생각에 하나의 QApplication은 마우스 이벤트 또는 키보드 이벤트를 받아 들일 것이므로 다른 하나는 그것을 얻지 못할 것입니다.

QApplication이 하나의 프로세스에서 너무 많은 QApplication을 기반으로 어떤 이벤트를 수용하는지에 대해서는 아마도 다소 임의적입니다.

프로세스 내에서 여러 QApplication을 원한다는 유즈 케이스를 상상할 수 없습니다. 당신이하려고하는 것을 확장 할 수 있습니까?

+0

원본 포스터는 한 프로세스에서 여러 개의 QApplication이 아닌 QApplication으로 각각 여러 프로세스를 의미한다고 설명했습니다. – rohanpm

3

하나의 QApplication으로 여러 프로세스를 실행할 수 있습니다.

그러나 임베디드 Linux의 경우 Qt는 QWS 서버 여야합니다. 다른 말로하면,`-qws '와 그 밖의 다른 모든 프로세스로 첫 번째 프로세스를 시작해야한다.

+0

그게 내가 한 짓. 하나의 응용 프로그램을 QWS 서버 및 fullScreen으로 실행했습니다. 두 번째 응용 프로그램, 단순히 클라이언트 및 normalMode. 둘 다의 메인 윈도우는 마우스 누르기 이벤트를 수신 중입니다. 전경 (두 번째 앱)에있는 애플리케이션은 키 누르기 이벤트 만 수신합니다. Fisrt 응용 프로그램 (QWS Server, fullScreen)을 클릭해도 focusInEvent를 얻지 못하므로 키보드 포커스가없고 키 누르기 이벤트가 없습니다. 이 앱이 주요 언론 이벤트를 가져 오기를 바랍니다. – beedroid