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

Auteur Sujet: [SFML+QT]Evènement closed non détecté.  (Lu 1954 fois)

0 Membres et 1 Invité sur ce sujet

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
[SFML+QT]Evènement closed non détecté.
« le: Juin 11, 2013, 10:05:49 am »
Salut,
Lorsque je ferme une fenêtre SFML dans une fenêtre QT, l'évènement event.Closed n'est pas détecté, quand je gère cela avec QT, la méthode closeEvent(QEvent *event) n'est pas appelée non plus.

Par contre, il me détecte bien les évènements clavier, souris, etc...

 while (pollEvent(event)) {
        if (event.type == Event::MouseButtonPressed && event.mouseButton.button == Mouse::Button::Left) {

            isMovingFromKeyboard = false;
            string startPos = conversionIntString(view.getCenter().x)+"#"+conversionIntString(view.getCenter().y);
            Vector2f cMousePos = mapPixelToCoords (Vector2i(Mouse::getPosition(*this).x, Mouse::getPosition(*this).y), view);
            string finalPos = conversionIntString(cMousePos.x)+"#"+conversionIntString(cMousePos.y);
            fPos = Vec2f (cMousePos.x, cMousePos.y);
            if (map->gridMap->getGridCellAt(fPos) != NULL) {

                Network::sendTCPMessage("MOVE2*"+startPos+"#"+finalPos);
                pathReceived = false;

            }

        } else if (event.type == Event::Closed) {
            cout<<"Close."<<endl;
            carInfoWidget->close();
        }
    }
 
Du coup bah ma fenêtre sfml se ferme bien quand je clique sur la croix, mais pas le widget Qt qui est dans la fenêtre SFML. :/
« Modifié: Juin 11, 2013, 10:07:51 am par Lolilolight »

Lolilolight

  • Hero Member
  • *****
  • Messages: 1232
    • Voir le profil
Re : [SFML+QT]Evènement closed non détecté.
« Réponse #1 le: Juin 11, 2013, 10:27:04 am »
Bon bah finalement j'ai réussi, suffisait d'appelé close() de la classe QWidget sur le SFMLCanvas et redéfinir la méthode closeEvent(QCloseEvent *event) de QT. (Avec un Q_UNUSED(event))

Et non pas la méthode close de mon widget qui était dans le CardLayout et qui contenais la SFMLCanvas.
Par contre ça ne marche qui si j'appelle la méthode close de QWidget, si j'appelle celle de sf::Window, ça ne marche pas.

Par contre pour les évènements clavier et souris, là, que ça soit avec Qt ou la SFML que je gère les évènement ça marche dans les 2 cas.
PS : Et oui j'ai un peu de mal avec les évènements pour les RenderWindow contenu dans les QWidget.

PS 2 : Mais, ceci est un gain de temps considérable quand je devrai créer les interfaces graphiques IG (Menus, système d'échange, barres de racourics, hotel des ventes, boutique en ligne, etc..) d'avoir des widget Qt dans ma fenêtre SFML. :) )
Je connais des jeux ou le clic sur les boutons pour l'hôtel des ventes était gérer avec un test de coordonnées plutôt qu'avec les signaux et slot de Qt déjà pré-fait bah c'était vraiment la galère quand on voulais acheter un objet. :/
« Modifié: Juin 11, 2013, 10:39:13 am par Lolilolight »