Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1372202
  • 博文数量: 198
  • 博客积分: 1629
  • 博客等级: 上尉
  • 技术积分: 2743
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-01 15:41
文章分类
文章存档

2023年(6)

2022年(20)

2021年(8)

2020年(3)

2018年(17)

2017年(3)

2016年(3)

2015年(9)

2014年(13)

2013年(17)

2012年(77)

2011年(22)

分类: LINUX

2017-04-12 16:00:47

1、qt支持usb 触摸屏热插拔
当前环境:qt-everywhere-opensource-src-4.8.6 + tslib-1.4 + linux 2.6.35

测试发现,运行qt程序,当使用USB触摸屏时,在触摸屏拔出后触摸屏的event节点会消失,当再次插入触摸屏时,即使生成了相同的节点,屏幕已经不能点击了。

解决办法:修改qt源码,使qt支持触屏的热插拔。


使用的是tslib库,对应的源码在qt源码中的src/gui/embedded/qmousetslib_qws.cpp

增加:#include

在QWSTslibMouseHandlerPrivate::readMouseData()的开始处加入以下代码,即可支持热插拔:

void QWSTslibMouseHandlerPrivate::readMouseData() 
{
    if(!qt_screen)
        return;
    /* Support usb touchscreen hotplug */
    int version;
    if (ioctl(ts_fd(dev), EVIOCGVERSION, &version) < 0) {
        disconnect(mouseNotifier, 0, 0, 0);
        delete mouseNotifier;
        while (1) {
            if(open()) {
                mouseNotifier = new QSocketNotifier(ts_fd(dev), QSocketNotifier::Read, this);
                connect(mouseNotifier, SIGNAL(activated(int)), this, SLOT(readMouseData()));
                resume();
                return;
            }
            system("echo waiting for tp ...");
            system("sleep 1");
        }
    }
    /* end */
    ...
}


重新编译qt,将生成的libQtGui.so.4.8.6替换到机器上即可。
阅读(2470) | 评论(0) | 转发(0) |
0

上一篇:YUV420转RGB24

下一篇:QT5支持矩阵键盘

给主人留下些什么吧!~~