最近测试发现,运行qt程序,当使用USB触摸屏时,在触摸屏拔出后触摸屏的event节点会消失,当再次插入触摸屏时,即使生成了相同的节点,屏幕已经不能点击了。
解决办法:
解决办法:修改qt源码,使qt支持触屏的热插拔,使用的qt库为4.8.6
因为使用的是使用的是tslib库,对应的源码在qt源码中的src/gui/embedded/qmousetslib_qws.cpp
在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替换到机器上即可。