跳到主要内容

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 工程

  1. example 目录下添加用户自己的 Qt 项目工程。

  2. 编辑 example 目录下 gui.pro 文件。

  3. 假设工程目录名为 double_panel_demo,则在 gui.pro 文件中追加 SUBDIRS += double_panel_demo

  4. 执行命令qmake && make

(7)运行效果

_images/double_panel.jpg

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

_images/Qt-config-Versions.png

  • 配置 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

_images/Qt-config-Compilers_1.png

_images/Qt-config-Compilers_2.png

为方便调试,配置 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

_images/Qt-config-Debuggers.png

  • 配置 Devices

设置好设备的 IP、用户名 (root) 和密码 (firefly) 。为了方便调试,可以在设备上设置静态 IP。

GDB server 设置为 /usr/bin/gdbserver

_images/Qt-config-Devices.png

  • 配置 Kits

将前面设置的配置项添加到 Kits。

如果目标平台是 Ubuntu 系统,这一步也需要添加 sysroot 的路径

_images/Qt-config-Kits.png

7.4.3. 编译运行

打开 demo 程序,Welcome -> Open Project,选择要使用的 Kits:

_images/Qt-Choose-Kit.png

之后打开 Projects -> Run,配置命令行参数,这里设置为 -platform wayland

目标平台是 Ubuntu 则使用 -platform xcb (Ubuntu 桌面环境),或者根据需要选择 linuxfbeglfs

_images/Qt-command_line_arguments.png

配置环境变量,即 export XDG_RUNTIME_DIR=/tmp/.xdg

RK356X Buildroot 则需要使用 /var/run 而不是 /tmp/.xdg

目标平台是 Ubuntu 则需要根据之前设置的 platform 添加不同的环境变量,详情在 Qt 环境包中的说明文件中

如果目标平台的运行环境(本文开头提到的)之前已经配置好并成功运行 demo,此时可以直接点击右侧Fetch Device Environment 获取目标的环境变量

_images/Qt-set-environment.png

编译运行:

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

_images/Qt-Compile.png

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