Linux上位机开发实践(关于Qt的移植)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

linux平台上面,很多界面应用,都是基于qt开发的。不管是x86平台,还是arm平台,qt使用的地方都比较多。虽然现在很多产品开始使用lvgl,不过就目前的观察来说,qt基本上还是大家默认的界面标准。今天就来讨论下,qt本身是如何port到平台之上的。

1、安装方法

目前要在Linux上面使用qt,主要就是两种方法。一种是直接apt-get下载;还有一种就是自己用源代码进行编译。如果是利用apt-get下载,一般代表系统本身已经安装好了ubuntu,或者是debian。这种情况下直接apt-get安装,无疑是最方便的。

另外一种,用编译源代码的方式安装。这种方式在那些cpu性能不是特别强的soc上面,表现得特别明显。**比如本身cpu就是a7、a9,频率也不算太高,大家使用qt就是做一个界面,增加一下人机交互而已,平时根本不安装ubuntu界面。**这个时候,要是没有qt,就只能通过网络或者串口的方式,和嵌入式设备做交互了。

今天主要讲的,就是后面一种移植方法。

2、qt编译前的依赖

qt要能正确编译使用,主要依赖于三个部分。第一,linux本身的屏幕驱动是否ok;第二,触控ic的驱动是否ok;第三,tslib是否安装。有了这三部分,再加上qt自身,就可以用利用qt的lib,开发独立界面应用了。

3、屏幕驱动

屏幕驱动是基础。不管是mipi屏幕,还是rgb屏幕,或者是hdmi这种没有屏幕的接口,只要可以显示,那么就会出现设备节点/dev/fb0。每出现这样一个节点,就代表嵌入式soc有一个屏幕。qt底层对屏幕的所有操作,也都是借助于/dev/fb0节点来完成的。所以,本质上qt就是一个中间件,和fatfs、lwip、sqlite这些中间件是一个道理。

4、触控驱动

为了增加体验,很多的屏幕都是触摸屏。想要获得触摸数据,一般会借助于i2c总线和解析芯片,来获得触控信息。触控信号的形式,一般是x+/x-/y+/y-,经过芯片转换成i2c信号,被soc读取。另外,不是所有的屏幕都是触摸屏,只要那些带有触摸信号的屏幕,才有触屏功能,不然只是简单的传统屏幕。

等到驱动ok了之后,我们就会看到/dev/input/event0这样的节点。

5、tslib库

**tslib是专门为触摸屏开发的一个开源软件。**它的作用有两个,一个是触摸屏校准。即,通过显示几个点,以及收到的i2c信号,tuning出一组参数。这组参数,将来可以直接作用于算法,把触摸信号转换成屏幕x、y坐标。另外一个,就是防止抖动,滤波、降低噪声,为上层提供一个统一的接口。这样上层的GUI就可以专注于图形界面的绘制和解析了。

6、qt怎么部署

qt要使用起来,需要这几个部分。第一,基于qt的应用程序;第二,qt库;第三,tslib库;第四,就是环境变量。其中前三部分都需要copy到嵌入式板子上,第四部分需要运行qt应用程序之前设置起来。一切都没有问题之后,就可以执行qt应用程序了。

7、qt下camera的实时显示

**有一些场景是需要在qt界面中同时显示camera数据的,如果soc支持mpp平台的话,建议多多使用。**把qt的底层切换成vo->layer->channel下面的一个通道。这样就可以借助于vo中通道的概念,把qt覆盖在camera图像上显示,顺势借助于中间的透明label控件,就可以达到实时camera显示的目的。

很多低端的soc,cpu非常弱,如果有类似mpp这样的加速平台,一定要多用起来。这样才可以弥补cpu不足带来的劣势,反而达到事半功倍的效果。反之,如果真的靠cpu去搬数据,一张一张来贴图,效果只会惨不忍睹。

相关推荐
小白学大数据2 分钟前
全站链接深度爬取:Python GUI 事件绑定 + 运行时动态过滤实现思路
开发语言·爬虫·python
郝学胜-神的一滴5 分钟前
Qt 高级开发 022:栅格布局深度实战
开发语言·c++·qt·软件构建·用户界面
codeejun11 分钟前
每日一 Go-72、分布式事务 & 一致性:本地消息表、事务消息、SAGA、TCC怎么选?
开发语言·分布式·golang
sycmancia13 分钟前
Qt——程序中的配置文件
开发语言·qt
赶在日落之前16 分钟前
使用conda-pack打包完整 Python 环境 + 依赖包,传到无网机器解压即用
开发语言·人工智能·python
雨落在了我的手上18 分钟前
Java数据结构(一):初识集合框架
java·开发语言
程序大视界18 分钟前
【C++ 从基础到项目实战】C++(三):函数进阶——重载、回调、递归与默认参数
开发语言·c++·cpp
爱喝水的鱼丶21 分钟前
SAP-ABAP:SAP 简单报表输出开发系列(共6篇)第二篇:SAP 报表数据筛选优化:选择屏幕自定义与查询效率提升
开发语言·数据库·学习·性能优化·sap·abap
HappyAcmen22 分钟前
8.角色 Prompt 模板
开发语言·python·prompt
oort12328 分钟前
VLStream 全开源决策式 AI 视频平台 技术视角完整说明
大数据·开发语言·人工智能·经验分享·python·开源·音视频