QTouchEvent在Windows 8下没有用Qt 4.7.4触发?

时间:2012-01-16 21:31:25

标签: qt touch multi-touch windows-8

我遇到了在带有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事件......

我在这里缺少什么东西吗?

谢谢大家!

1 个答案:

答案 0 :(得分:1)

您是否尝试在graphicsview的viewport()上安装事件过滤器? 这是事件发送的地方。