это мой main.cpp
#include "mainwindow.h"
#include <QApplication>
#include "SDL.h"
#include <QDebug>
#undef main
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
SDL_Window *window = nullptr;
SDL_Surface *windowSurface = nullptr;
SDL_Init(SDL_INIT_VIDEO);
SDL_SetHint(SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS,"1");
SDL_Init( SDL_INIT_JOYSTICK);
SDL_Joystick *joystick = SDL_JoystickOpen(0);
qDebug()<<SDL_JoystickName(joystick);
qDebug()<<(SDL_JoystickNumAxes(joystick));
qDebug()<<(SDL_JoystickNumButtons(joystick));
window = SDL_CreateWindow("SDL CodingMadeEasy Series", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640, 480, SDL_WINDOW_SHOWN);
windowSurface = SDL_GetWindowSurface(window);
SDL_Event ev;
int x;
bool isRunning = true;
while(isRunning)
{
while(SDL_PollEvent(&ev) != 0)
{
if (ev.type == SDL_JOYBUTTONDOWN)
{
qDebug()<<"Button Clicked";
}
}
// Drawing the current image to the window
SDL_UpdateWindowSurface(window);
}
return a.exec();
}
он может распознать контроллер PS4, поскольку он распечатывает строки qDebug. Я попытался изменить ev.type == (ЧТО-ТО, НЕ СВЯЗАННОЕ С ДЖОЙСТИКОМ), и он работал нормально, так что, по-видимому, проблема с JOYBUTTONDOWN.
любая помощь?
Я на Windows 10 .. Без QT не пробовал.
Не хочешь сказать мне, как их включить? Но я не думаю, что отключил их с самого начала
Вы были правы, его нужно было включить.
это было исправлено Включением событий джойстика
SDL_JoystickEventState(SDL_ENABLE);
Какая ОС? Это нормально без qt? Вы уверены, что не отключили события джойстика?