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

Auteur Sujet: [Résolu]Qt + SFML : la fenetre SFML s'affiche automatiquement  (Lu 2866 fois)

0 Membres et 1 Invité sur ce sujet

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Bonjour à tous,

j'utilise une fenêtre SFML pour afficher des extraits d'animations jouables. J'ai une QMainWindow secondaire qui s'affiche au clic du bouton "Catalogue" de ma fenêtre principale. Je voudrais que la fenêtre SFML ne s'affiche qu'à ce moment là, et qu'elle disparaisse à la fermeture du catalogue.

Seulement, la fenêtre SFML s'affiche à l'ouverture du programme alors que je n'ai rien fait pour. Je me doute que cela doit venir d'un comportement souhaité de Qt quant au contenu d'une QMainWindow, mais je n'arrive pas à contourner cela :

(je m'excuse d'avance le code est fait "àlavatrèèsvite", car je suis plus pressé par le résultat que par la propreté)

la classe contenant la fenetre (j'ai créé une classe en vue de lui faire faire d'autres choses) :
#ifndef ANIMPLAYER_HPP
#define ANIMPLAYER_HPP


#include "OrderedAnimHandler.hpp"
#include <SFML/Graphics.hpp>

class AnimPlayer
{
    sf::RenderWindow* App;
public:
    AnimPlayer();
    sf::RenderWindow* GetApp();
};

#endif // ANIMPLAYER_HPP

//je vous mets le constructeur, qui est dans le fichier source, ici
AnimPlayer::AnimPlayer() :
    App(new sf::RenderWindow(sf::VideoMode(100,100,32),"Extrait", sf::Style::Titlebar))
{
}
 

le constructeur de la classe contenant un membre AnimPlayer :

Editeur::Editeur(QWidget *parent) :
    QMainWindow(parent),
    zoneCentrale(new QMdiArea()),
    catalogue(new QMainWindow()),
    animPlayer(new AnimPlayer())
{
    //je laisse les commentaire au cas où vous voudriez analyser une des portions de code qui suivent, mais y'a pas grand chose à voir avec le problème je penses, mais je peux me tromper..

    //Définition de la zone centrale
    //...
    //Définition des dimensions
    //...
    //Création du catalogue
    //...
    //Initialisation du catalogue
    //...
    //Création du menu "fichier"
    //...
    //Sous-menus du menu "fichier"
    //...
    //Création de l'action jouer
    //...
    //Création de l'action Catalogue
    //...
    //Définition des différentes actions possibles
    //...

}
 


le main :
#include <QApplication>
#include "editeur.hpp"

int main(int argc, char* argv[])
{
    QApplication App(argc, argv);
    Editeur edt;
    edt.show();
    App.exec();
    return 0;
}
 


Je ne fais rien de plus mais la fenetre s'affiche quand même... auriez-vous une explication et une solution de contournement ?

Merci d'avance,

Kamui.
« Modifié: Juin 04, 2012, 06:09:24 pm par kamui »

Laurent

  • Administrator
  • Hero Member
  • *****
  • Messages: 32498
    • Voir le profil
    • SFML's website
    • E-mail
Re : Qt + SFML : la fenetre SFML s'affiche automatiquement
« Réponse #1 le: Juin 04, 2012, 05:53:17 pm »
Avec SFML, contrairement à Qt, les fenêtres sont affichées par défaut. En gros tu ne peux pas créer une fenêtre cachée. Il faut donc que tu la crées uniquement au moment où tu en as besoin.
Laurent Gomila - SFML developer

kamui

  • Sr. Member
  • ****
  • Messages: 291
    • Voir le profil
Re : Qt + SFML : la fenetre SFML s'affiche automatiquement
« Réponse #2 le: Juin 04, 2012, 06:09:02 pm »
Ok, merci^^