Bonjour,
je debute sous qt et j'essaye desesperement depuis des semaines d'utiliser les fontions de la SDL pour utiliser un joystick dans un programme QT...
mais mon probleme c'est que je n'arrive pas à linker ma sdl dans mon projet qt;
Au moment de compiler, il me fait SDL_init_video et joy not decrlared in this scope...
alors j'aimeras savoir ce que j'ai fait faut... dans le doute j'ai aussi ajoutés mes headers sdl avec ceux de qt dans les fichiers qt, et mon sdl.dll avec ceux de qt dans les fichiers qt.
voici mon .pro:
mon includepath pointe sur le dossier ou il y a ts les .h de la sdl, dans le dossier du reste de la sdl.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 QT += core gui TARGET = Essaie2 TEMPLATE = app INCLUDEPATH +=C:\Users\Victor\Documents\Projets\paintball\SDL-devel-1.2.14-mingw32 LIBS +=C:\Users\Victor\Documents\Projets\paintball\SDL-devel-1.2.14-mingw32\SDL-1.2.14\bin SOURCES += main.cpp\ Fenetre.cpp HEADERS += Fenetre.h FORMS += widget.ui
et mon libs, vers le sdl.dll dans le dossier ou se trouve le reste de la sdl...
ma classe cpp:
ma classe .h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52 #include "Fenetre.h" #include <iostream> using namespace std; Fenetre::Fenetre(int FenWidth, int FenHeight) : QWidget() { setFixedSize(FenWidth, FenHeight); setWindowIcon(QIcon("icone_qt.png")); setWindowTitle("Editeur Mouvement v0.01"); onglets = new QTabWidget(this); onglets->setGeometry(30, 20, 240, 160); // 2 : Créer les pages, en utilisant un widget parent pour contenir chacune des pages. page1 = new QWidget; // Page 1 frame = new QFrame(); frame->setGeometry(30, 20, 120, 90); frame->setAttribute(Qt::WA_PaintOnScreen); frame->setAttribute(Qt::WA_NoSystemBackground); // On lie SDL a Qt char windowid[64]; #ifdef Q_WS_WIN sprintf(windowid, "SDL_WINDOWID=0x%lx", reinterpret_cast<qlonglong>(frame->winId())); #elif defined Q_WS_X11 sprintf(windowid, "SDL_WINDOWID=0x%lx", frame->winId()); #else qFatal("Fatal: cast du winId() inconnu pour votre plate-forme; toute information est la bienvenue!"); #endif cout<<windowid; SDL_putenv(windowid); // Initialisation du système vidéo de SDL SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK); SDL_Surface* screen = SDL_SetVideoMode(120, 90, 32,SDL_HWSURFACE|SDL_DOUBLEBUF); //fin SDL QVBoxLayout *vbox1 = new QVBoxLayout; vbox1->addWidget(frame); page1->setLayout(vbox1); // Fin page 1 onglets->addTab(page1, "SDL Mouvement"); }
et enfin ma main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 #ifndef FENETRE_H_INCLUDED #define FENETRE_H_INCLUDED #include <SDL-1.2.14/SDL.h> #include<SDL-1.2.14/SDL_video.h> #include<SDL-1.2.14/SDL_joystick.h> #undef main #include <QApplication> #include <QtGui> class Fenetre : public QWidget // On hérite de QWidget (IMPORTANT) { public: Fenetre(int FenWidth, int FenHeight); private: QPushButton *m_bouton; QTabWidget *onglets; QWidget *page1; QFrame *frame; }; #endif // FENETRE_H_INCLUDED
alors voila qu'est ce que j'ai faut svp???
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #include "fenetre.h" int main(int argc, char* argv[]) { QApplication app(argc, argv); Fenetre fenetre(400,200); fenetre.show(); return app.exec();; }
Un grand Merci!!!
Partager