C++ SDL2/Qt C++;未读取操纵杆输入,但已识别

C++ SDL2/Qt C++;未读取操纵杆输入,但已识别,c++,qt,sdl,sdl-2,ps4,C++,Qt,Sdl,Sdl 2,Ps4,这是我的主要任务 #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;

这是我的主要任务

#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();
}
#包括“mainwindow.h”
#包括
#包括“SDL.h”
#包括
#未定义主
int main(int argc,char*argv[])
{
质量保证申请a(argc、argv);
主窗口w;
w、 show();
SDL_Window*Window=nullptr;
SDL_Surface*windowSurface=nullptr;
SDL_Init(SDL_Init_视频);
SDL_设置提示(SDL_提示_操纵杆_允许背景_事件,“1”);
SDL_Init(SDL_Init_操纵杆);
SDL_操纵杆*操纵杆=SDL_操纵杆打开(0);

qDebug()它是通过启用操纵杆事件修复的

SDL_JoystickEventState(SDL_ENABLE);

什么操作系统?没有qt可以吗?你确定没有禁用操纵杆事件吗?我在windows 10上。没有尝试过没有qt。请告诉我如何启用它们?但我不认为我从一开始就禁用了它们。你是对的,它需要启用。