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

news/2025/2/6 15:36:58 标签: Qt

在终端中运行下面三句命令用于配置开发板上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.niftyadmin.cn/n/5843139.html

相关文章

ES6 字符串、数值、数组扩展使用总结

1. 字符串的扩展方法 1.1 includes() // 判断字符串是否包含指定字符串 const str Hello World; console.log(str.includes(Hello)); // true console.log(str.includes(hello)); // false console.log(str.includes(World, 6)); // true - 从位置6开始搜索// 实际应用 func…

基础相对薄弱怎么考研

复习总体规划 明确目标 选择专业和院校:根据你的兴趣、职业规划和自身实力,选择适合自己的专业和院校。可以参考往年的分数线、报录比、复试难度等。了解考试科目:不同专业考试科目不同,一般包括: 公共课&#xff1a…

java 日常下拉框接口字典封装

Operation(description "字典") GetMapping("/dict") public Result dict() {Long userItemId super.getUserItemId();Page<Manure> objectPage new Page<>();objectPage.setSize(100000);objectPage.setCurrent(1);Page<Manure> pag…

MacBook Pro(M1芯片)DeepSeek R1 本地大模型环境搭建

MacBook Pro&#xff08;M1芯片&#xff09;DeepSeek R1 本地大模型环境搭建 这一阵子deepseek真的是太火了&#xff0c;这不&#xff0c;R1出来后更是掀起AI的狂欢&#xff0c;作为一个AI的外行人&#xff0c;也是忍不住想要拿过来感受一番&#xff5e;&#xff5e; 主要呢&…

Java进阶14 TCP日志枚举

Java进阶14 TCP&日志&枚举 一、网络编程TCP Java对基于TCP协议得网络提供了良好的封装&#xff0c;使用Socket对象来代表两端的通信端口&#xff0c;并通过Socket产生IO流来进行网络通信。 1、TCP协议发数据 1.1 构造方法 方法 说明 Socket(InetAddress address…

微前端如何实现作用域隔离

微前端是一种架构风格,它将前端应用拆分为多个独立的子应用,使得各个子应用可以独立开发、部署和维护。在微前端架构中,作用域隔离是一个关键问题,确保不同子应用之间的样式、脚本和状态不会冲突。本文将讨论几种实现作用域隔离的方法。 1. CSS 作用域隔离 1.1 CSS Modul…

多用户同时RDP登入Win10

自备以下文件&#xff1a; winsw_frpc.xml展开如下&#xff1a; <service><!-- ID of the service. It should be unique across the Windows system--><id>winsw_frp</id><!-- Display name of the service --><name>winsw_frp</na…

uniapp小程序自定义中间凸起样式底部tabbar

我自己写的自定义的tabbar效果图 废话少说咱们直接上代码&#xff0c;一步一步来 第一步&#xff1a; 找到根目录下的 pages.json 文件&#xff0c;在 tabBar 中把 custom 设置为 true&#xff0c;默认值是 false。list 中设置自定义的相关信息&#xff0c; pagePath&#x…