QPA 平台
QPA 即 Qt Platform Abstraction,是 Qt5 里面的平台抽象层,用以取代 Qt for Embedded Linux 以及 Qt4 中的平台接口, Qt 官方对 QPA 有如下描述。
Qt Platform Abstraction
The Qt Platform Abstraction (QPA) is the platform abstraction layer for Qt 5 and replaces Qt for Embedded Linux and the platform ports from Qt 4.
QPA plugins are implemented by subclassing various
QPlatform*
classes. There are several root classes, such asQPlatformIntegration
andQPlatformWindow
for window system integration andQPlatformTheme
for deeper platform theming and integration. QStyle is not a part of QPA.There are no source or binary compatibility guarantees for the QPA classes, meaning that a platform plugin is only guaranteed to work with the Qt version it was developed against. API changes will however only be made in minor releases. (5.1, 5.2, and so on.)
RealEvo-Qt5SylixOS 标准SDK目前支持 sylixosfb、wayland、vnc 显示平台,使用时可通过环境变量或命令参数来指定显示平台,环境变量设置方式如下。
QT_QPA_PLATFORM=sylixosfb # 使用 sylixosfb 显示
QT_QPA_PLATFORM=vnc # 使用 vnc 显示
QT_QPA_PLATFORM=wayland # 使用 wayland 显示
应用程序命令行参数 -platform
可覆盖环境变量设置的默认显示方式,具体使用方式如下。
app -platform sylixosfb # 使用 sylixosfb 显示
app -platform vnc # 使用 vnc 显示
app -platform wayland # 使用 wayland 显示
不同的显示方式具有其特有的优势与特点,使用时可根据需求选择。
sylixosfb(单窗口)
sylixosfb 显示时支持屏幕旋转与镜像功能,其图像直接显示在显示屏等显示设备之上,是最常用的显示方式。
屏幕旋转与镜像功能示例如下:
app -platform sylixosfb:fb=/dev/fb0,rotation=90,flip=x:fb=/dev/fb1,rotation=180,flip=y
其代表fb0旋转 90 度,并以 x 轴为中心翻转,fb1旋转 180 度,并以 y 轴为中心翻转,其中rotation可选90、180、270,flip可选x或y。旋转与镜像的参数均为可选项,可根据需求设置。
示例:
不带旋转和镜像。
app -platform sylixosfb:fb=/dev/fb0
旋转90°,不带镜像。
app -platform sylixosfb:fb=/dev/fb0,rotation=90
不旋转,以 x 轴为轴镜像。
app -platform sylixosfb:fb=/dev/fb0,flip=x
旋转90°,并以 x 轴为轴镜像。
app -platform sylixosfb:fb=/dev/fb0,rotation=90,flip=x
合成器(多窗口)
在 RealEvo-Qt5SylixOS 中,wayland 合成器的名称为 Parallel Show Compositor 简写为 pshow-compositor。 使用合成器可支持多窗口显示。
合成器使用方式
- 启动合成器,执行
/usr/bin/pshow-compositor -platform sylixosfb:fb=/dev/fbx &
,fbx以设备中实际生成的名称为准,合成器启动完成之后将显示合成器桌面。 - 启动应用,执行
your_app -platform wayland
,执行之后,应用程序将显示到合成器桌面中。
注意:
目前多窗口使用CPU软件渲染,性能有限,建议在低性能平台下使用低分辨率。
多屏显示支持
RealEvo-Qt5SylixOS的wayland显示平台支持多屏显示,包括复制屏模式和扩展屏模式。默认情况下是单屏显示。使用多屏显示功能需要配置如下两个环境变量。
QT_QPA_PLATFORM=sylixosfb:fb=/dev/fb0:fb=/dev/fb2
wayland的多屏显示功能依赖sylixosfb可以配置多个屏幕,如上所示,将自己的sylixosfb设备依次配置到
QT_QPA_PLATFORM
中,这里的配置顺序和扩展屏模式显示的顺序是有关系的。SYLIXOS_QT5_SCREEN=array=1x2:mode=Extend
配置多屏显示模式,
mode
可以配置Single
(单屏)、Copy
(复制屏)、Extend
(扩展屏),array
代表屏幕的排列方式,配置成(row)x(col)的格式,表示屏幕矩阵的行数和列数。比如有两个屏幕的情况下可以配置1x2或者2x1,分别代表两块屏幕放在一行或放在一列,以此类推。假设以如下配置运行 APP。
QT_QPA_PLATFORM=sylixosfb:fb=/dev/fb0:fb=/dev/fb1 SYLIXOS_QT5_SCREEN=array=1x2:mode=Extend /usr/bin/pshow-compositor & your_app -platform wayland
显示效果如图。
注意:
SYLIXOS_QT5_SCREEN
中array
配置的屏幕个数需要和QT_QPA_PLATFORM
中配置的屏幕个数相同,否则会按照单屏处理。
复制屏显示模式要求多块屏幕的分辨率相同,否则按照单屏显示处理。
多屏显示不支持鼠标和触摸屏同时操作,鼠标跨屏之后光标无法跟随触摸点。
合成器背景图片修改
执行 /usr/bin/pshow-compositor -img=your_image_path
,其中 your_image_path
为背景图片的路径,如果文件格式错误或文件不存在则使用默认背景图片。
合成器使用默认背景图片运行效果如下。
更换背景图片后,运行效果如下。
vnc
vnc 可通过网络将显示内容传输到其它设备显示,对于不方便查看显示器或开发过程等场景有独特优势,使用方式如下。
app -platform vnc:size=1280x800
其中 size
参数可选,用于指定分辨率。当应用程序启动之后,可在任意与设备网络互通的电脑上使用 vnc viewer 连接用于显示,显示效果如下。