SDL2 / Qt C ++ не читает входные данные джойстика, но распознается - PullRequest
0 голосов
/ 27 сентября 2018

это мой 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.

любая помощь?

1 Ответ

0 голосов
/ 27 сентября 2018

это было исправлено включением событий джойстика

SDL_JoystickEventState(SDL_ENABLE);
...