LINUX.ORG.RU

Геймпад в QT

 ,


0

1

Есть у меня геймпад. На нем есть 2 стика - левый и правый. В jstest они оба отображаются и работают. Но вот в QT только левый работает.

Q_ASSERT(connect(gamepad, SIGNAL(axisLeftYChanged(double)), this, SLOT(gamepadLeftYChanged(double))));
Q_ASSERT(connect(gamepad, SIGNAL(axisRightYChanged(double)), this, SLOT(gamepadRightYChanged(double))));

первый сигнал срабатывает при изменении положения левого джойстика, второй при изменении правого - нет.

★★★★★

Последнее исправление: cvs-255 (всего исправлений: 2)

QGamepad это обертка над различными бэкендами, которые глючат от платформы к платформе и от джойстика к джойстику. Попробуй другой бэкенд - SDL2 например.

И почему используешь эти уродливые макросы времен Qt4 для сигналов и слотов? Давно уже пора от них отказаться

ncuxer
()
//    QLoggingCategory::setFilterRules("qt.gamepad=true");
#ifdef Q_OS_MAC
    qputenv("QT_GAMEPAD", "sdl2");
#endif
ncuxer
()
Ответ на: комментарий от ncuxer

Что с ними не так? Они позволяют цеплять сигнал с аргументами к слоту без аргументов, иногда это удобно.

WRG ★★★★
()
Ответ на: комментарий от WRG

Ошибка выводится в рантайме в консоли как минимум, а не при компиляции.

К слоту без аргументов можно прицепить и так

connect(gamepad, &QGamepad::axisLeftYChanged, this, [&]{ gamepadLeftYChanged(); })
ncuxer
()
Ответ на: комментарий от ncuxer

Хм, интересный способ, не пользовался таким.

WRG ★★★★
()

Там кривая подсистема работы с геймпадом, используй SDL.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.