tslib库是一个开源库,专门为触摸屏设备设计,提供了通用的触摸屏事件处理框架,可以有效地解决Linux系统中触摸屏设备的输入问题。
在上一篇文章《Ubuntu虚拟机安装Qt5 for ARM交叉开发环境》中,我们详细介绍了如何在虚拟机中安装Qt交叉开发环境。本篇文章将介绍如何将tslib库集成到Qt5中,以便在Qt应用程序中使用触摸屏事件处理。
tslib库是一个针对触摸屏设备的开源库,它提供了一个通用的触摸屏事件处理框架,能够有效地解决触摸屏设备在Linux系统中的输入问题。
tslib库的主要功能包括:
在使用tslib库时,通常需要先对触摸屏设备进行校准,以确保触摸屏的输入准确性。校准完成后,就可以使用tslib库提供的接口获取触摸屏事件并进行相应的处理了。
总之,tslib库为嵌入式Linux系统中的触摸屏设备提供了一个简单、高效的输入事件处理方案,可以大大提高嵌入式设备的用户体验。
这两种方法的主要区别在于应用程序如何使用 tslib 库。
在使用 -qt-mouse-tslib 参数配置 Qt 编译选项时,Qt 库中的鼠标驱动将使用 tslib 库来读取触摸屏输入。这意味着 Qt 库为应用程序提供了 tslib 的接口,应用程序直接使用 Qt 库中 tslib 的函数读取触摸屏输入即可。如果采用这种方法,则在编译应用程序时,不需要显式地引用 tslib 库,因为 Qt 库已经包含了 tslib 的接口。
而如果将 tslib 作为外部库加入 Qt Creator,那么需要在编译应用程序时,显式地将 tslib 库链接到应用程序中。这样做的好处是,可以在应用程序中直接使用 tslib 提供的一些其他功能,而不局限于 Qt 库中已经实现的触摸屏输入功能。同时,在使用其他库时,也可以方便地链接 tslib 库,避免了重复编写或链接 tslib 库的工作。
因此,如果只是需要支持触摸屏输入功能,那么 -qt-mouse-tslib 参数是一个比较方便的选择;如果还需要使用 tslib 的其他功能或同时使用其他库,那么将 tslib 作为外部库加入 Qt Creator 中可能更为便捷。
本文介绍如何将tslib作为外部库加入Qt Creator。
在之后的《ubuntu虚拟机安装Qt4 for ARM 交叉开发环境》一文中我们会介绍如何使用-qt-mouse-tslib 参数将tslib库加入Qt安装程序包中。
以下是在 Ubuntu 操作系统上使用 CMake 编译和安装 tslib 库的步骤:
(1) 下载 tslib 源代码
git clone https://github.com/libts/tslib.git
(2)进入 tslib 目录,并创建 build 目录
$ cd tslib
$ mkdir build
$ cd build
(3) 运行 CMake 并指定安装目录
$ cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local/tslib
(4) 编译并安装
$ make
$ sudo make install
(5) 配置库搜索路径
将 tslib 库的路径添加到系统库搜索路径中,以便在编译其他程序时能够找到该库。编辑 /etc/ld.so.conf 文件,添加以下行:
/usr/local/tslib/lib
保存并退出文件。然后运行以下命令更新系统库缓存:
$ sudo ldconfig
现在,tslib 库已经成功编译和安装到系统中了。
(6) 查看安装结果
ldconfig -p | grep tslib
libts.so.0 (libc6,x86-64) => /usr/local/tslib/lib/libts.so.0
libts.so (libc6,x86-64) => /usr/local/tslib/lib/libts.so
这些结果表明你已经成功地安装了tslib库,并且库文件被安装在了/usr/local/tslib/lib/目录下。其中,libts.so.0和libts.so是tslib库的两个动态链接库文件,分别提供不同的功能和接口。这些文件的路径被添加到了系统的共享库搜索路径中,因此程序可以在运行时找到并加载这些库文件。
cross-toolchain-file.txt 文件通常是通过手动创建并编辑来实现交叉编译的。该文件包含了一些交叉编译需要用到的工具链信息,比如交叉编译工具链的名称、路径、编译器、链接器、库路径等等。在 CMake 中,可以使用 CMAKE_TOOLCHAIN_FILE 变量指定该文件的路径,以便在交叉编译时使用正确的工具链。在创建 cross-toolchain-file.txt 文件时,需要了解目标设备的架构、操作系统、工具链等信息,并且需要确保所选工具链与目标设备兼容。
下面是一个cross-toolchain-file.txt文件的示例:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)
set(TOOLCHAIN_PREFIX /usr/arm-linux-gnueabi/bin)
set(TOOLCHAIN_INCLUDE_PATH /usr/arm-linux-gnueabi/include)
set(TOOLCHAIN_LIBRARY_PATH /usr/arm-linux-gnueabi/lib)
set(CMAKE_C_COMPILER ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-gcc)
set(CMAKE_CXX_COMPILER ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-g++)
set(CMAKE_STRIP ${TOOLCHAIN_PREFIX}/arm-linux-gnueabi-strip)
set(CMAKE_FIND_ROOT_PATH ${TOOLCHAIN_LIBRARY_PATH})
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
下面逐句解释它的作用:
(1) 运行 CMake 并指定安装目录
$ cmake .. -DCMAKE_INSTALL_PREFIX=/home/linux/tslib-arm -DCMAKE_TOOLCHAIN_FILE=cross-toolchain-file.txt
(2) 编译并安装程序包
$ make
$ sudo make install
(1)打开qtcreator
qtcreator
(2)新建一个项目“hello-tslib”
(3)选择正确的Kits,
(4)生成项目如下图,右击“helloword”项目名,选择外部库,点击「Next」:
(5)选择我们前面编译安装好的tslib库:
(6)编译完成: