Bienvenue, Invité. Merci de vous connecter ou de vous inscrire.
Avez-vous perdu votre e-mail d'activation ?

Auteur Sujet: SFML et QT : rien ne marche  (Lu 2347 fois)

0 Membres et 3 Invités sur ce sujet

Galabriel

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
SFML et QT : rien ne marche
« le: Avril 26, 2013, 05:23:20 pm »
Bonjour à tous !

Je suis sur la création d'une interface de console de jeux-vidéo. Tout ce passait bien jusqu'à que j'ai eu à implémenter la gestion du joystick. J'ai donc pensé à SFML.

Mais du coup, ayant une interface déjà conçue et ayant lu quelques tuto, je me demandais comment on pouvait juste intégrer la gestion des évènements SFML dans une fenêtre typiquement QT.

J'ai essayé de faire hériter ma classe de sf::Window, ça à compiler, mais aucune réponse de la part de mon interface. Même lorsque je lui demande de tester une réponse Clavier...

Mon code ne servirait pas à grand chose... mais je peux vous mettre 2-3 info intéressante :

Ma classe :
 class FenPrincipale : public QGraphicsView, public sf::Window, public sf::Event
{
    ....
}

mon Event :

void FenPrincipale::timerEventJoystickManagement() //un timer se déclenche régulièrement
{
    sf::Event Event;
    while (this->GetEvent(Event)) //this fait référence à ma fenêtre
    {
        if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
            text->setPlainText(QString::fromUtf8("Manette fonctionnelle ! :D")); //je change un texte

    }
}

Je tiens à rajouter que donc ce code compile (donc en théorie il est fonctionnelle) mais qu'il ne me renvoi aucune information.
Est-ce que vous savez ce que j'ai fait de faut ? Tout peu être ? J'aurai bien besoin d'un petit d'aide. Et je ne peux décemment pas tout recoder... Merci !!

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML et QT : rien ne marche
« Réponse #1 le: Avril 26, 2013, 05:38:56 pm »
Utilise SFML 2, qui a une classe sf::Joystick (et sf::Keyboard et sf::Mouse si besoin) complètement découplée des fenêtres.

Mais... :
- A mon avis tu dois pouvoir trouver des classes Qt-compliant pour faire du joystick
- Et si ça n'existe pas, je ne suis pas sûr que SFML soit la meilleure bibliothèque pour ça, il y en a qui sont dédiées à cette tâche (comme OIS par exemple)
« Modifié: Avril 26, 2013, 08:39:57 pm par Laurent »
Laurent Gomila - SFML developer

Galabriel

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : SFML et QT : rien ne marche
« Réponse #2 le: Avril 26, 2013, 08:04:30 pm »
En effet, je pourrais utiliser autre chose. Mais ont prévoient de créer un SDK, des jeux ou d'utiliser d'autres fonctionnalité de SFML. Je préférerai donc rester dessus :D

Donc j'ai suivi ton conseil et installer SFML2, mais même si j'ai accès aux fonctions, j'ai une erreur :
"undefined reference to `sf::Keyboard::isKeyPressed(sf::Keyboard::Key)'" (en rapport aux tuto sur les évènement de SFML2).
Donc je me dis que j'ai peu être mal installer et initialiser les includes et Lib... la partie de mon .pro concernant SFML ressemble à ça  :

INCLUDEPATH += /home/galabriel/Joystick/include/
LIBS += -L/home/Galabriel/Joystick/lib -lsfml-window -lsfml-system

C'est bien comme ça ? Parce que du coup je ne comprend pas vraiment l'erreur... j'ai pourtant chercher pas mal de temps sur Google histoire de ne pas poser de question stupide. Mais là je bloque !

edit : idem avec le joystick, la ligne "if (sf::Joystick::isButtonPressed(0, 1))" me donne l'erreur " undefined reference to `sf::Joystick::isButtonPressed(unsigned int, unsigned int)'"
En revanche if(sf::Keyboard::isKeyPressed()) marche, c'est à rien n'y comprendre. Peut-être un mauvais mix en SFML 2 et 1.6 ? pourtant j'ai bien supprimer toutes occurrence de 1.6 et j'ai même fait un autoremove ..purge (je suis sous linux)
« Modifié: Avril 26, 2013, 08:14:45 pm par Galabriel »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : SFML et QT : rien ne marche
« Réponse #3 le: Avril 26, 2013, 08:41:27 pm »
C'est vraiment bizarre... Tu n'as rien d'autre relatif à SFML dans ton .pro ? Tu as compilé SFML toi-même ? Si oui, avec quelles options CMake ?
Laurent Gomila - SFML developer

Galabriel

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : SFML et QT : rien ne marche
« Réponse #4 le: Avril 27, 2013, 11:35:54 am »
Je vais te faire une liste de tout ce que j'ai fait, ça va être plus simple :
- J'ai téléchargé "SFML 2.0 Release Candidate" pour Linux X64
- Je l'ai mis dans un dossier "Joystick"
- J'ai désintaller SFML 1.6, puis défini les includes et les lib du 2 dans mon pro
- J'ai refait un Qmake de mon projet
- J'ai eu les fonctionnalité SFML2, mais ça compile pas

Du coup, mon .pro ressemble à ça :

#-------------------------------------------------
#
# Project created by QtCreator 2013-03-04T10:29:36
#
#-------------------------------------------------

QT       += core gui
QT       += opengl
QT       += webkitwidgets
QT       += network

INCLUDEPATH += /home/galabriel/Joystick/include/
LIBS += -L/home/Galabriel/Joystick/lib -lsfml-window -lsfml-system

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = Projet_Lichi
TEMPLATE = app


SOURCES += main.cpp\
        fenprincipale.cpp \
        carousel.cpp \
        registrationForm.cpp \
        cookies.cpp \
    litchinavigator.cpp

HEADERS  += fenprincipale.h \
        variantanimator.h \
        carousel.h \
        registrationForm.h \
        cookies.h \
    litchinavigator.h

FORMS    += \
    registrationForm.ui

RESOURCES += \
    wallpapers.qrc \
    icons.qrc

Bon après, c'est vrai que je ne suis pas très doué en se qui concerne la compilation du biblio avec Cmake. Je vais quand même tenter de le faire, sait-on jamais...

Galabriel

  • Newbie
  • *
  • Messages: 4
    • Voir le profil
Re : SFML et QT : rien ne marche
« Réponse #5 le: Avril 27, 2013, 12:37:36 pm »
AHAH !

ENFIIIIN !! Enfin presque :p

Donc, ayant des tit problèmes avec la fonction Cmake (foutu instable débian, il manque des paquets), j'ai user de mes privilèges de super-utilisateur pour copier directement les lib dans /usr/local/lib une par une, puis j'ai refait un "ldconfig" dans le dossier "/ect/ld.so.conf.d" histoire que je n'ai pas de problème avec les "shared library" qui m'empêche de compiler !

Et ça y est ! J'ai tout, ça compile. Enfin presque ! Les évènements clavier et souris marche... Mais pas joystick ! Bon ça doit être du à autre chose... Je ne sais pas encore... Pourtant la manette est reconnu sous mon linux avec le logiciel "jstest-gtk", enfin... Si tu as une idée comme ça à l'instint je suis preneur, sinon ne t'embête pas, je vais trouver !

En tout cas, merci beaucoup pour ton aide ! Elle m'a été extrêmement précieuse !!
Bonne continuation,

edit : Un petit sj::joystiick::upadate(); ça aide ! >< bon dieu que je suis nouille ! Voilà, ça marche :D
« Modifié: Avril 27, 2013, 01:07:15 pm par Galabriel »