为什么我从 QTouchPoint 获得无效数据?

发布于 2024-11-07 13:23:39 字数 576 浏览 0 评论 0原文

我有一个带有 QGraphicsItems 的 QGraphicsScene 。我重新实现了 sceneEvent 函数并处理多点触摸。

问题是我随机地从本节中得到无效值:

    QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
    QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
    const QTouchEvent::TouchPoint &p0 = touchPoints.first();

给出以下调试信息(并非总是如此):

Debug: TouchUpdate: p0.scenePos(): QPointF(489.76, 160.71) :
Debug: TouchUpdate: p0.startPos(): QPointF(-8.62078e+14, 1.83351e+15)

我不知道为什么 startPos() 应该是这样的随机值。有什么建议吗?

I have a QGraphicsScene with QGraphicsItems. I have reimplemented the sceneEvent function and handle multi-touch.

The problem is that randomly I get invalid values out of this section:

    QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
    QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();
    const QTouchEvent::TouchPoint &p0 = touchPoints.first();

Gives the following debug information (not all the time):

Debug: TouchUpdate: p0.scenePos(): QPointF(489.76, 160.71) :
Debug: TouchUpdate: p0.startPos(): QPointF(-8.62078e+14, 1.83351e+15)

I have no idea why startPos() should be a random value like that. Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏花。依旧 2024-11-14 13:23:39

您是否盲目地转换事件或使用如下 switch-case 语句?

    bool MyItem::sceneEvent(QEvent *event)
    {
        case QEvent::TouchBegin:
        case QEvent::TouchUpdate:
        case QEvent::TouchEnd:
        {
            QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
            QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();

            //Remember to accept the event too
            event->accept();
            break;
        }
    }

Are you blindly casting events or using a switch-case statement as below ?

    bool MyItem::sceneEvent(QEvent *event)
    {
        case QEvent::TouchBegin:
        case QEvent::TouchUpdate:
        case QEvent::TouchEnd:
        {
            QTouchEvent *touchEvent = static_cast<QTouchEvent *>(event);
            QList<QTouchEvent::TouchPoint> touchPoints = touchEvent->touchPoints();

            //Remember to accept the event too
            event->accept();
            break;
        }
    }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文