我遇到了在带有4点触摸屏的Acer W501 x86平板电脑上运行的Windows 8下的QT触控/多点触控支持问题。
我有一个QGraphicsView小部件,我已经完成了
setAttribute(Qt::WA_AcceptTouchEvents);
小部件的父级有一个eventFilter方法:
bool MyGUI::eventFilter(QObject* pObject, QEvent* pEvent)
{
QEvent::Type eType = pEvent->type();
if (pObject == _uiWindow._multitouchArea)
{
if ((eType == QEvent::TouchBegin) || (eType == QEvent::TouchEnd) || (eType == QEvent::TouchUpdate))
{
// invoke multi touch event handling here
_handleTouchEvent(pEvent);
}
else if ((eType == QEvent::MouseButtonPress) || (eType == QEvent::MouseButtonRelease) || (eType == QEvent::MouseMove))
{
// invoke mouse based handling here
_handleMouseEvent(pEvent);
}
}
else
{
return pObject->event(pEvent);
}
return false;
}
安装在QGraphicsViewWidget上。
现在我明白Qt默认将单点触摸事件解释为鼠标事件并将它们发送到应用程序。然而,无论我将触摸屏与我的解剖结构的任何部分混合得多么困难,我都无法触发任何TouchBegin / TouchUpdate / TouchEnd事件......
我在这里缺少什么东西吗?
谢谢大家!
答案 0 :(得分:1)
您是否尝试在graphicsview的viewport()上安装事件过滤器? 这是事件发送的地方。