QJoysticks

时间:2018-05-09 09:59:33

标签: c++ qt

我正在尝试实施Joystick input library for Qt并且大部分工作正常而不是一个。 我的操纵杆有3轴。每次如果我尝试使用第三轴,我都会收到一条错误消息

ASSERT failure in QList<T>::operator[]: "index out of range", file ../Qt/5.9.3/gcc_64/include/QtCore/qlist.h, line 549

但是使用调试器,我能够理解,由于某种原因,控制器上的第4轴的e轴分数为4.存储轴分配的List只有4,这意味着第4轴索引超出了List的范围。

调试器向我展示了此代码中的问题(getInputDevice ...

void QJoysticks::onAxisEvent (const QJoystickAxisEvent& e)
{
    if (!isBlacklisted (e.joystick->id)) {
        getInputDevice (e.joystick->id)->axes [e.axis] = e.value;
        emit axisChanged (e.joystick->id, e.axis, e.value);
    }
}

qDebug() << getInputDevice (e.joystick->id)->axes;出现(0, 0, 0)

qDebug() << e.axis;出现4

有一个想法,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。

但是,如果您不需要第4轴,而只是基本的2D操纵杆运动,只需更改代码即可忽略第4轴:

void QJoysticks::onAxisEvent (const QJoystickAxisEvent& e)
{
    if (!isBlacklisted (e.joystick->id)) {
        if (e.axis != 4)
        {
            getInputDevice (e.joystick->id)->axes [e.axis] = e.value;
            emit axisChanged (e.joystick->id, e.axis, e.value);
        }
    }
}