我正在尝试实施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
有一个想法,我该如何解决这个问题?
答案 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);
}
}
}