You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LattePanda搭载Xubuntu(XFCE4)环境下Qt应用触摸屏手势异常问题求助

LattePanda搭载Xubuntu(XFCE4)环境下Qt应用触摸屏手势异常问题求助

嘿,我之前在类似的轻量SBC+XFCE环境里折腾过触摸屏的问题,给你分享几个亲测有效的方案,刚好适配LattePanda的资源限制:

一、Xubuntu/XFCE4系统层面的配置调整

1. 禁用触摸时的光标显示

XFCE默认会把触摸事件映射成鼠标事件,所以会显示光标,推荐用轻量工具unclutter来隐藏,完全不占额外资源:

  • 先安装工具:sudo apt install unclutter
  • 配置自启动:打开XFCE的「会话和启动」→「应用程序自动启动」,添加新启动项,命令填unclutter -idle 0.1 -root,意思是光标闲置0.1秒就自动隐藏,-root表示全局生效
  • 要是想彻底隐藏(连闲置等待都不需要),可以修改Xorg配置:创建/usr/share/X11/xorg.conf.d/99-hide-cursor.conf,写入以下内容:
Section "InputClass"
    Identifier "touchscreen"
    MatchIsTouchscreen "on"
    Option "CursorShape" "none"
EndSection

重启系统后光标就完全消失了。

2. 启用系统级触摸手势

XFCE原生手势支持有限,装个官方插件就能快速搞定:

  • 安装插件:sudo apt install xfce4-gestures-plugin
  • 配置手势:打开XFCE的「设置」→「手势」,在这里可以添加双指滑动、三指缩放等常用手势,记得先在「设备」标签里确认你的触摸屏被选中
  • 先验证触摸设备是否正常:用xinput list查看系统识别的触摸设备ID,再用xinput test <设备ID>测试触摸事件,如果能看到坐标输出,说明硬件识别没问题

二、Qt应用内部的手势优化

Qt本身对触摸手势有很好的原生支持,只要调整几个设置就能适配纯触摸场景:

1. 禁用鼠标事件,强制触摸模式

在Qt Widgets应用的main函数里添加以下代码,把应用切换到纯触摸模式:

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    // 适配LattePanda的高DPI屏幕
    app.setAttribute(Qt::AA_EnableHighDpiScaling);
    app.setAttribute(Qt::AA_UseHighDpiPixmaps);
    // 主动抓取捏合、滑动等触摸手势
    app.gestureManager()->setGrabGesture(Qt::PinchGesture);
    app.gestureManager()->setGrabGesture(Qt::SwipeGesture);

    // 你的应用初始化代码...

    return app.exec();
}

如果是Qt Quick/QML应用,在主窗口里忽略鼠标事件,只处理触摸逻辑:

import QtQuick 2.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visibility: Window.FullScreen // 强制全屏运行
    MouseArea {
        anchors.fill: parent
        acceptedButtons: Qt.NoButton // 完全忽略鼠标事件
        // 处理捏合手势示例
        onPinchStarted: {
            // 你的捏合缩放逻辑
        }
        // 处理滑动手势示例
        onSwipeStarted: {
            // 你的页面切换逻辑
        }
    }
}

2. 编译与依赖检查

确保你的Qt环境安装了触摸相关依赖:sudo apt install libqt5gui5 libqt5multimedia5 libqt5quickcontrols2-5,如果是自己编译Qt,记得开启QT_TOUCH_SUPPORT配置选项。另外,启动应用时可以加环境变量QT_QPA_EGLFS_NO_CURSOR=1,强制隐藏应用内的光标。

三、LattePanda专属适配经验

我之前用LattePanda Delta做过类似项目,踩过两个小坑,给你提个醒:

  • 驱动问题:有些LattePanda的触摸屏默认用的是旧HID驱动,可能导致手势识别异常,建议更新到Ubuntu 20.04的最新内核(sudo apt install linux-generic-hwe-20.04),更新后重启就能识别到完整的触摸事件
  • 触摸校准:如果触摸坐标和显示画面偏移,用xinput_calibrator工具校准:安装sudo apt install xinput-calibrator,运行后按照提示点击校准点,生成的配置会自动保存到Xorg里

备注:内容来源于stack exchange,提问作者Samrat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 11:53:07