开发板上Qt运行的环境变量的三条设置语句的详解

ops/2025/2/5 7:04:22/

在终端中运行下面三句命令用于配置开发板上Qt运行的环境变量:

export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1
export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0
export QT_QPA_FONTDIR=/usr/lib/fonts/

设置成功后可以用下面的语句检查设置成功没有

echo $QT_QPA_GENERIC_PLUGINS
echo $QT_QPA_PLATFORM
echo $QT_QPA_FONTDIR

这几行环境变量的设置主要是为了在IMX6ULL等嵌入式开发板上运行Qt应用程序,指定输入设备、显示方式和字体目录。

如果想让结果一直生效, 可以编辑文件/etc/profile,在后面追加上上面三条语句:

vi /etc/profile

在这里插入图片描述

这三条命令分别解释如下:

第1句配置命令

export QT_QPA_GENERIC_PLUGINS=tslib:/dev/input/event1

作用:
指定Qt使用tslib插件来处理触摸输入,并设定输入设备为/dev/input/event1

QT_QPA_GENERIC_PLUGINS:用于设置Qt的通用输入插件,如tslib(触摸屏库)。

tslib:/dev/input/event1:表示使用tslib插件,并将设备文件/dev/input/event1作为触摸屏输入设备。关于如何确认哪个设备文件对应触摸屏设备,可以参考我的另一篇博文 https://blog.csdn.net/wenhao_ir/article/details/145433887

这里的重点在于开发板上的Qt要具备什么条件才能使用tslib插件。
你需要确保下面的两部分文件是存在的:
① tslib库安装在开发板上了,安装方法见 https://blog.csdn.net/wenhao_ir/article/details/144621008 【搜索“tslib库安装到开发板上并进行测试”】,由于之前我已经安装并测试了,这里就略过了。
② 开发板上有Qt提供的tslib插件文件 libqtslibplugin.so,其路径如下:

/usr/lib/qt/plugins/generic/libqtslibplugin.so

用下面的命令查看目录/usr/lib/qt/plugins/generic/下的文件:

ls /usr/lib/qt/plugins/generic/

在这里插入图片描述
可见libqtslibplugin.so是存在的。

第2句配置命令

export QT_QPA_PLATFORM=linuxfb:fb=/dev/fb0

作用:指定Qt使用linuxfb(Linux framebuffer)作为图形输出方式,并设定帧缓冲设备为/dev/fb0
这里关键还是如何确认/dev/fb0对应的是LCD屏,如何确认的方法见 https://blog.csdn.net/wenhao_ir/article/details/145438283

  • QT_QPA_PLATFORM:定义Qt的图形后端(QPA,即Qt Platform Abstraction)。
  • linuxfb:指明使用Linux的Framebuffer(帧缓冲)作为显示后端。
  • fb=/dev/fb0:指定具体的帧缓冲设备,一般/dev/fb0是主显示设备。

第3句配置命令

export QT_QPA_FONTDIR=/usr/lib/fonts/

作用:指定Qt应用程序的字体目录,使其能够正确加载字体文件。
QT_QPA_FONTDIR:定义Qt字体文件的搜索路径。
/usr/lib/fonts/:该目录下通常包含.ttf.fon等字体文件,确保Qt GUI应用可以正确显示文本。
我们可以去看下目录/usr/lib/fonts/下有没有字体文件:

ls /usr/lib/fonts/

在这里插入图片描述https://blog.csdn.net/wenhao_ir/article/details/145438538
可见有一个名叫 msyh.ttc 的字体文件。关于字个字体文件的介绍和来历,见博文 https://blog.csdn.net/wenhao_ir/article/details/145438538
设置这个目录后, Qt 会自动从 /usr/lib/fonts/ 目录加载 msyh.ttc 作为默认字体。

总结:

这几行环境变量的作用是:

  1. Qt使用tslib处理触摸输入,并指定触摸屏设备。
  2. Qt使用Framebuffer进行图形渲染,并指定帧缓冲设备。
  3. 指定Qt的字体目录,确保UI能正确显示文本。

这样设置后,Qt应用程序可以在IMX6ULL等嵌入式Linux系统上通过Framebuffer渲染界面,并支持触摸输入。


http://www.ppmy.cn/ops/155804.html

相关文章

Block Blaster Online:免费解谜游戏的乐趣

Block Blaster Online 是一款免费的在线解谜游戏,它将挑战你的思维和反应能力!在这里,你可以匹配五彩缤纷的方块,创造出令人惊叹的组合,享受无尽的解谜乐趣。无需安装,点击即可开始,加入全球数百…

【JavaEE】Spring(5):Mybatis(上)

一、什么是Mybatis Mybatis是一个持久层的框架,它用来更简单的完成程序和数据库之间的交互,也就是更简单的操作和读取数据库中的数据 在讲解Mybatis之前,先要进行一些准备工作: 1. 为项目添加 Mybatis 相关依赖 2. 创建用户表以…

[MySQL]事务的理论、属性与常见操作

目录 一、事物的理论 1.什么是事务 2.事务的属性(ACID) 3.再谈事务的本质 4.为什么要有事务 二、事务的操作 1.事务的支持版本 2.事务的提交模式 介绍 自动提交模式 手动提交模式 3.事务的操作 4.事务的操作演示 验证事务的回滚 事务异常…

小程序设计和开发:如何研究同类型小程序的优点和不足。

一、确定研究目标和范围 明确研究目的 在开始研究同类型小程序之前,首先需要明确研究的目的。是为了改进自己的小程序设计和开发,还是为了了解市场趋势和用户需求?不同的研究目的会影响研究的方法和重点。例如,如果研究目的是为了…

Cocos Creator 3.8 2D 游戏开发知识点整理

目录 Cocos Creator 3.8 2D 游戏开发知识点整理 1. Cocos Creator 3.8 概述 2. 2D 游戏核心组件 (1) 节点(Node)与组件(Component) (2) 渲染组件 (3) UI 组件 3. 动画系统 (1) 传统帧动画 (2) 动画编辑器 (3) Spine 和 …

Android学习19 -- 手搓App

1 前言 之前工作中,很多时候要搞一个简单的app去验证底层功能,Android studio又过于重型,之前用gradle,被版本匹配和下载外网包折腾的堪称噩梦。所以搞app都只有找应用的同事帮忙。一直想知道一些简单的app怎么能手搓一下&#x…

基于SpringBoot养老院平台系统功能实现一

一、前言介绍: 1.1 项目摘要 随着全球人口老龄化的不断加剧,养老服务需求日益增长。特别是在中国,随着经济的快速发展和人民生活水平的提高,老年人口数量不断增加,对养老服务的质量和效率提出了更高的要求。传统的养…

oracle: 表分区>>范围分区,列表分区,散列分区/哈希分区,间隔分区,参考分区,组合分区,子分区/复合分区/组合分区

分区表 是将一个逻辑上的大表按照特定的规则划分为多个物理上的子表,这些子表称为分区。 分区可以基于不同的维度,如时间、数值范围、字符串值等,将数据分散存储在不同的分区 中,以提高数据管理的效率和查询性能,同时…