我们有一个 Qt GUI 应用程序在启动时通过注册表 Run/RunOnce-Key 启动。
当启动时,Qt 应用程序从触摸屏获取位置,但不获取单击事件(模拟鼠标单击按钮)本身。
手动运行时,Qt 应用程序获取位置并从触摸屏单击。
使用鼠标时,两个版本都可以正常工作。启动时启动的其他应用程序确实接受通过触摸单击。
我们没有实现任何 TouchEvents,触摸屏只是被解释为鼠标事件。我猜该应用程序只是为了快速并在触摸屏驱动程序完全加载之前启动,然后以某种方式错误地触发“点击”事件。但我根本不知道如何验证这一点或如何寻找问题。
我们运行不同的系统,没有出现这个问题,它只是我们现在遇到问题的这台 Windows 电脑。更换电脑是消除问题的一种选择,但我仍然想找到问题的根源,以确保不会再次发生这种情况。目前,100 个系统中就有一个存在此问题。
我编写了一个小的附加应用程序,将 eventFilter 安装到 qApp 以查看实际到达的事件。在启动时运行时,我只收到鼠标移动事件,而稍后手动启动时,我收到移动新闻稿事件。
我想知道其他人是否遇到过与 Qt/"clickapplications" 和触摸屏本身类似的触摸问题。
bool MouseFilter::eventFilter(QObject *o, QEvent *e)
{
if(e->type() == QEvent::MouseMove)
{
emit signalMouseMove();
return true;
}else if(e->type() == QEvent::MouseButtonRelease) {
emit signalMouseRelease();
return true;
}else if(e->type() == QEvent::MouseButtonPress) {
emit signalMousePress();
return true;
}else if(e->type() == QEvent::MouseButtonDblClick) {
emit signalMouseDoubleClick();
return true;
}
return QObject::eventFilter(o,e);
}
MouseFilter *mf = new MouseFilter();
qApp->installEventFilter(mf);