【发布时间】:2012-01-16 21:31:24
【问题描述】:
我在带有 4 点触摸屏的 Acer W501 x86 平板电脑上运行 Windows 8 时遇到 QT 触控/多点触控支持问题。
我已经完成了一个 QGraphicsView 小部件
setAttribute(Qt::WA_AcceptTouchEvents);
widget 的父级有一个 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 事件......
这里有什么我遗漏的吗?
谢谢大家!
【问题讨论】:
-
有趣的是,我尝试用一个简单的 QWidget 替换 QGraphicsView。 QWidget 似乎可以很好地接收触摸事件...
标签: qt touch multi-touch windows-8