한국어
Qt

Mobile and Embedded QPA 플러그인과 EGLFS

makersweb 2017.11.21 22:32 조회 수 : 241

QPA는 Qt5의 플랫폼 추상화 레이어이며 근본적으로 QWS 및 Qt 4의 플랫폼 포트를 대체하기 위한 목적으로 개발되었는데 QPA는 Qt5에서 정식으로 지원하였으며 4.8 에서는 실험적으로 적용되었다. 플랫폼 윈도우 시스템의 종속적인 구현을 캡슐화하여 다양한 플랫폼에 대응하기위한 것으로 윈도우 시스템 통합을 위한 QPlatformIntegration및 QPlatformWindow와 같은 클래스들이 존재한다.

 

QPA_Architecture.png

▲QPA아키텍쳐

 

QPA 플러그인을 개발 하기 위한 문서가 많지 않아 다른 플러그인을 보고 API를 어떻게 구현하는지 확인 해야한다.

다만 테스트를 위해 Qt 5와 함께 제공되는 minimal플러그인 2개와 임베디드 리눅스 시스템에서 잠재적으로 사용할 수 있는 여러 플랫폼 플러그인들(EGLFS, LinuxFB, DirectFB, Wayland)이 있으며 이 것들은 예제로 사용할 수 있다.

 

qtbase/src/plugins/platforms/minimal/
qtbase/src/plugins/platforms/minimalegl/

 

Qt4.8에서 알려진 문제점으로는 입력과 포커스처리, Qt단위 테스트를 수행 하지 않았다.

이문제로 인한 특정 위젯(QWidget)으로 입력 이벤트가 전달 되지 않는 문제도 발생된다.

 

위에서 설명한 것처럼 QPA는 Qt4.8에서 실험적인 적용되었기 때문에 이 버전에서 QPA사용은 문제 발생의 여지가 있다는 것을 의미한다.

 

QPA에 대해 자세히 설명하는 영상이 있다.

 

EGLFS

 

EGLFS는 X11 또는 Wayland와 같은 실제 윈도우시스템 없이 EGL 및 OpenGL ES 2.0을 기반으로 Qt 응용 프로그램을 실행하기 위한 플랫폼 플러그인이다.

EGLFS는 하나의 최상위 창 (QWidget 또는 QQuickView)을 전체 화면으로 만든다.

이 창은 다른 모든 최상위 위젯 (예 : 대화 상자, 팝업 메뉴 또는 콤보 상자의 드롭 다운)이 합성되는 루트 위젯 창으로 선택된다. 이와 같은 특성으로 팝업 메뉴창이 전체 화면으로 생성되는 문제를 가진다. 이것은 이미 오래 전부터 알려진 문제로서 eglfs의 특성상 ComboBox 및 기타 대화상자가 사용되는 위젯의 사용이 불가능 한 것으로 알려져 있다.

 

아래 링크에서 참조 및 인용:

http://doc.qt.io/qt-5/embedded-linux.html

https://wiki.qt.io/Qt_Platform_Abstraction

https://wiki.qt.io/DirectFBAndQt

http://doc.qt.io/qt-5/qpa.html

 

아래표는 각 임베디드 프랫폼을 비교한 것이다. (임베디드 시스템 환경에서 유의해야 할 부분이다.)

 

 

OpenGL

Multiple Window

Single Process

Multi Process

directfb

O

O

X

eglfs

O

X

X

linuxfb

X

O

X

wayland

O

O

O

xcb

O

O

O

 

번호 제목 글쓴이 날짜 조회 수
26 Qt Bluetooth 관련 기능 확인 사항 makersweb 2018.07.10 11
25 Qml 및 C++개발시 유용한 팁 makersweb 2018.04.06 179
24 Qt Version확인 방법 makersweb 2018.03.29 197
23 초보자를 위한 첫번째 프로젝트 QML을 통한 Hello World file makersweb 2018.03.16 264
22 Windows에서 라즈베리파이3 Qt 어플리케이션 개발 및 원격 실행 file makersweb 2018.02.23 621
21 Windows에서 라즈베리파이3용 Qt5.10.0 크로스컴파일 file makersweb 2018.02.23 962
20 Windows환경에서 mingw로 Qt 5.10 정적(static)빌드 file makersweb 2018.02.01 674
19 다국어 지원 어플리케이션 개발 file makersweb 2018.01.27 196
18 Qt 어플리에이션 전역에 폰트 설정 makersweb 2018.01.24 237
17 Qt 3D Studio 시작하기 file makersweb 2018.01.11 233
16 QPA 플러그인과 HTML5 Backend file makersweb 2017.12.27 36
15 임의의 메모리 영역(QImage)에 QPainter를 이용하여 그리기 makersweb 2017.12.19 142
14 QML에서 undefined를 확인하는 방법 makersweb 2017.11.29 92
» QPA 플러그인과 EGLFS file makersweb 2017.11.21 241
12 타임스탬프( timestamp) 유닉스 시간 makersweb 2017.10.19 165
11 Qt Logging Rule, Qt 프레임워크 로그 출력 makersweb 2017.01.13 1515
10 QString 문자열에서 숫자만 추출해서 QString으로 반환 makersweb 2017.01.10 1559
9 멀티 스레드환경, 스레드에 안전한 이벤트처리 makersweb 2016.10.27 2466
8 Ubuntu Linux에서 Qt Creator 설치 file makersweb 2016.03.06 5570
7 QtConcurrent를 이용하여 쓰레드를 만드는 방법과 MapReduce makersweb 2016.01.24 4627