IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques Discussion :

[SDL] Problème fermeture du QWidget SDL


Sujet :

Bibliothèques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut [SDL] Problème fermeture du QWidget SDL
    Bonjour,

    J'ai donc dans le main l'initialisation d'un QWidget contenant intégralement la SDL et d'un QWidget basique comme ceci, mais lors de la fermeture du QWidget SDL, l'autre QWidget se ferme aussi.
    Voici le code du main pour l'appel des 2 QWidget et le .cpp du QWidget SDL :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    int main(int argc, char *argv[])
    {
        QApplication app(argc, argv);
    	FenQtSDL *fenetre = new FenQtSDL();
    	fenetre->show();
     
    	QWidget *fenetre2 = new QWidget();
    	fenetre2->show();
     
        return app.exec();
    }
    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
    #include "FenQtSDL.h"
     
    FenQtSDL::FenQtSDL(QWidget *parent) : QWidget(parent)
    {
        setupUi(this);
    	char windowid[64];
    	#ifdef Q_WS_WIN
    		sprintf(windowid, "SDL_WINDOWID=0x%lx", reinterpret_cast<qlonglong>(winId()));
    	#elif defined Q_WS_X11
    		sprintf(windowid, "SDL_WINDOWID=0x%lx", winId());
    	#else
    		qFatal("Fatal: cast du winId() inconnu pour votre plate-forme; toute information est la bienvenue!");
    	#endif
    	SDL_putenv(windowid);
    	SDL_Init(SDL_INIT_VIDEO);
    	screen = SDL_SetVideoMode(512, 512, 32, SDL_SWSURFACE);
     
     
     
    }
     
    FenQtSDL::~FenQtSDL()
    {
    	qDebug( "Console Thread Exited Normally" );
    	SDL_FreeSurface( screen );	
    	SDL_Quit();
    }
    A l'inverse, si je ferme le QWidget basique, la fenêtre SDL ne se ferme pas.

    Merci d'avance.

  2. #2
    Responsable 2D/3D/Jeux


    Avatar de LittleWhite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2008
    Messages
    27 158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 27 158
    Billets dans le blog
    152
    Par défaut
    Bonjour,

    J'imagine que la première fenêtre construite dans Qt est la fenêtre de l'application (d'autant plus si c'est une QMainWindow()). Donc si celle ci est fermé tout Qt se ferme.
    Si vous inverser l'ordre de création des fenêtre (la fenêtre console avant la fenêtre SDL) peut être que le résultat sera meilleur.
    Vous souhaitez participer à la rubrique 2D/3D/Jeux ? Contactez-moi

    Ma page sur DVP
    Mon Portfolio

    Qui connaît l'erreur, connaît la solution.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 16
    Par défaut
    Merci de la réponse,

    Non, alterner les 2 ne change rien.
    quoi qu'il en soit c'est deux widgets à la base, mais le problème vient sans doute de la SDL car dans un autre programme Qt, n'importe quelle fenêtre que je ferme n'affecte pas cette action à d'autres.

    J'avais tenté de mettre un Widget dans la fenêtre, alors effectivement, si après je ferme la fenêtre, l'autre reste ouverte... mais par contre si je mettais le focus sur le QWidget basique, l'affichage SDL s'efface sur l'autre ... (chose que je trouve bizarre, j'espère ne pas avoir oublier un truc bête).

    Edit : Apparemment c'est SDL_INIT qui pose problème, après des tests.

Discussions similaires

  1. [SDL] Problème de vitesse
    Par Hybrix dans le forum Développement 2D, 3D et Jeux
    Réponses: 26
    Dernier message: 06/01/2007, 22h31
  2. Problème POO C++ et SDL
    Par Marneus dans le forum SDL
    Réponses: 9
    Dernier message: 10/10/2006, 07h01
  3. [SDL] problème de débogage sdl_ttf
    Par mouteb dans le forum SDL
    Réponses: 4
    Dernier message: 08/09/2006, 17h06
  4. [SDL] Problème avec SDL_Flip()
    Par Drannor dans le forum C
    Réponses: 6
    Dernier message: 24/11/2005, 22h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo