Qt 支持
7.1. Qt 环境支持
Firefly 设备系统如果是 Ubuntu 22.04 可以直接通过 apt 安装 Qt 环境:
# 安装基础环境
apt update
apt install -y qtcreator qtbase5-dev
# 安装额外组件与开发环境,例如
apt install -y libqt5multimedia5 qtmultimedia5-dev libqt5quick5 qtdeclarative5-dev
安装后直接在设备上进行开发。
Ubuntu 18.04 或者 Ubuntu 20.04 需要借助电脑进行交叉编译,详情请看下一章
7.2. Qt 交叉编译环境支持
Firefly 发布了两个 Qt 交叉编译工具链,适用于以下环境,请根据需求选择:
-
Qt: 5.12.2
-
Host: x86-64 / Ubuntu 18.04
-
Target: Firefly RK3568 RK3566 RK3399 RK3328 PX30 / Ubuntu 18.04 Minimal&Desktop
和
-
Qt: 5.15
-
Host: x86-64 / Ubuntu 20.04
-
Target: Firefly RK3588 RK3568 RK3566 / Ubuntu 20.04 Desktop
工具链完整支持 wenEngine, 支持 EGLFS LinuxFB XCB 等 backend。
- 下载地址
点击下载链接(提取码:FFQT)
- 部署
详情参见工具链中的 Qt5.1x.x_Release.md 文件
注意,文档中所有路径的名称不可更改,否则会导致编译或者运行出错。
- 编译
在host端,进入 Qt 工程目录,qmake && make 即可.
- 运行
工具链中含有例程,用户在部署完成后,可以在 host 端 build demo,在 tartget 端运行 demo 以测试部署是否成功。
确定了使用哪个后端,就可以修改设备中 /etc/profile.d/target_qtEnv.sh 文件,去除对应平台环境变量前面的#使其一直生效
# 例如,使用 XCB ,则将文件内 XCB 部分前面的 # 删除
#XCB
export QT_QPA_PLATFORM=XCB
export QT_QPA_EGLFS_INTEGRATION=XCB_EGL
7.3. Qt 双屏异显
Firefly Ubuntu 系统可以使用 Qt 应用实现双屏显示和操作。
(1)进入桌面环境
export XAUTHORITY=/home/firefly/.Xauthority
export DISPLAY=:0
(2)设置环境变量
export QT_QPA_PLATFORM=xcb
export QT_QPA_EGLFS_INTEGRATION=XCB_EGL
(3)运行 Demo
./firefly_arm64_qt5.12.2_18.04/demo/double_panel_demo
(4)Demo 代码目录
firefly_arm64_qt5.12.2_18.04/example/double_panel_demo
(5)代码编译
cd example
qmake
make
(6)添加自己的 Qt 工程
-
在
example目录下添加用户自己的 Qt 项目工程。 -
编辑
example目录下gui.pro文件。 -
假设工程目录名为
double_panel_demo,则在gui.pro文件中追加SUBDIRS += double_panel_demo。 -
执行命令
qmake && make。
(7)运行效果

7.4. Qt Creator
目标平台的系统是 Ubuntu 22.04 则不用看本章节,直接在设备上使用 qtcreator,无需特殊设置。
其他版本系统需要交叉编译 qt,请继续往下看:
下面介绍主机上 Qt Creator 的使用说明,在操作前,请先安装、配置好 Qt 交叉编译环境和运行环境 。
7.4.1. 安装
进入 Qt 官方下载页面,选择一个版本下载 qt-creator-opensource-linux-x86_64-x.x.x.run,下载完成之后,在终端执行./xxxx.run运行安装,注意文件需要有执行权限。
7.4.2. 配置
下面以 firefly-qt-5.12.2-aarch64 环境作为例子进行配置,目标平台是 Buildroot 系统:
目标平台系统不同,配置也稍有不同,所以请仔细查看文字说明,图片仅供参考,不要照搬图片中的配置
安装完成后,启动 Qt Creator,打开菜单 Tools -> Options,找到 Kits。
- 配置 Qt Versions
点击右侧 add 按钮添加,选择 Qt 环境安装位置中的 qmake 即可
qmake:/opt/firefly-qt-5.12.2-aarch64/host/bin/qmake

- 配置 Compilers
点击右侧 add 按钮添加 gcc 和 g++ 交叉编译器的位置
如果主机安装了 crossbuild-essential-arm64,则编译器就在 /usr/bin/ 下
如果使用了第三方的交叉编译器,找到安装位置并添加即可
如果目标平台是 Buildroot,则需要使用 Buildroot Qt 环境包中的编译器
g++:/opt/firefly-qt-5.12.2-aarch64/host/bin/aarch64-buildroot-linux-gnu-g++
gcc:/opt/firefly-qt-5.12.2-aarch64/host/bin/aarch64-buildroot-linux-gnu-gcc


为方便调试,配置 Debuggers 和 Devices 用于在线调试:
- 配置 Debuggers
首先主机中安装 gdb-multiarch:apt install -y gdb-multiarch
检查目标机上是否存在 /usr/bin/gdbserver,没有的话需要安装:apt install -y gdbserver (Buildroot 自带,无需安装)
回到主机的 Qt Creator,点击右侧 add 按钮添加 gdb
选择主机中的 gdb-multiarch :/usr/bin/gdb-multiarch

- 配置 Devices
设置好设备的 IP、用户名 (root) 和密码 (firefly) 。为了方便调试,可以在设备上设置静态 IP。
GDB server 设置为 /usr/bin/gdbserver

- 配置 Kits
将前面设置的配置项添加到 Kits。
如果目标平台是 Ubuntu 系统,这一步也需要添加 sysroot 的路径

7.4.3. 编译运行
打开 demo 程序,Welcome -> Open Project,选择要使用的 Kits:

之后打开 Projects -> Run,配置命令行参数,这里设置为 -platform wayland:
目标平台是 Ubuntu 则使用 -platform xcb (Ubuntu 桌面环境),或者根据需要选择 linuxfb、eglfs

配置环境变量,即 export XDG_RUNTIME_DIR=/tmp/.xdg:
RK356X Buildroot 则需要使用 /var/run 而不是 /tmp/.xdg
目标平台是 Ubuntu 则需要根据之前设置的 platform 添加不同的环境变量,详情在 Qt 环境包中的说明文件中
如果目标平台的运行环境(本文开头提到的)之前已经配置好并成功运行 demo,此时可以直接点击右侧Fetch Device Environment 获取目标的环境变量

编译运行:
点击 Build 交叉编译 Qt 程序;点击 Run 或 Debug 在设备上运行或调试程序。要重新运行程序时,记得手动点击 Stop 关闭已经运行的程序。

编译生成目录和 demo 目录在同一位置。