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

SFML Discussion :

sfml/sfgui: Suppression de widget


Sujet :

SFML

  1. #1
    Membre régulier
    Homme Profil pro
    Second de cuisine
    Inscrit en
    Avril 2005
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Second de cuisine
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2005
    Messages : 193
    Points : 99
    Points
    99
    Par défaut sfml/sfgui: Suppression de widget
    Bonjour,


    Apres avoir fait une petite boite alert (une window, un bouton et un label), j'essaye de la detruire pour liberer la memoire.

    J'utilise SFML 2.0 & SFGUI.

    Le constructeur, pour voir un peu la bete:
    Code cpp : 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
     
    AlertBox::AlertBox(const std::string& errortitle, const std::string& errortext) :
        display(true)
    {
        // The window
        dialog = sfg::Window::Create(sfg::Window::Style::TITLEBAR);
        dialog->SetTitle(errortitle);
     
     
        // The layouter
        sfg::Box::Ptr box( sfg::Box::Create( sfg::Box::VERTICAL, 5.0f ) );
     
        // The elements
        text = sfg::Label::Create(errortext);
        btn = sfg::Button::Create("Ok");
        btn->GetSignal(sfg::Widget::OnLeftClick).Connect(&AlertBox::Destroy, this);
     
        box->Pack(text);
        box->Pack(btn, false);
        dialog->Add(box);
    }

    La fonction Destroy ne change que la variable membre "display" à false.

    Dans ma boucle graphique, j'ai ceci:
    Code cpp : 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
     
            // Boucle sur les boites alert
            for(auto itr = m_window->GetPerennials()->List().begin(); itr != m_window->GetPerennials()->List().end(); ++itr)
            {
                    // Si l'objet n'a jamais été dessiné, on l'ajoute au sfg::Desktop
                if(itr->second->Display() && !itr->second->Drawn())
                {
                    // La fonction AlertBox::GetDrawable retourne un sfg::Window::Ptr
                    desktop.Add(itr->second->GetDrawable());
                }
                else if(!itr->second->Display())
                { // Ceci est quand on vient d'appuyer sur le bouton, et que la fonction Destroy a ete appellee
                            // On supprime le sfg::Window de sfg::Desktop
                    desktop.Remove(itr->second->GetDrawable());
                }
            }
            m_window->Clear(); // sf::RenderWindow::Clear();
            desktop.Update( clock.restart().asSeconds() );
            m_window->RenderGUI(sfgui); // sfg::Display(m_window);
            m_window->Render(); // sf::RenderWindow::Display();

    Et Quand j'appuie sur le bouton, he bien le sfg::Window ne disparait pas. Il reste sur l'ecran ! Neanmoins je ne peux plus interagir.
    Il doit y avoir un probleme au niveau de Clear, ou Update.

    Quelqu'un saurais me gider?
    merci, nico

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


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

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 26 855
    Points : 218 551
    Points
    218 551
    Billets dans le blog
    118
    Par défaut
    Bonjour,

    Je dois dire que je ne sais pas vraiment.

    Peut être il faut forcer le redraw des fenêtres en dessous de votre popup.
    Sinon, je pense aussi que la signal devrait être envoyé à une des classes principales afin que ce soit celle ci qui détruise la petite fenêtre et qui la supprime de ces tableaux.
    J'ai aussi vu dans la documentation une fonction pour forcer le réaffichage d'une fenêtre. Tu peux toujours tenter.
    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.

Discussions similaires

  1. Suppression d'un widget gênant sur mon site wordpress.
    Par MInfo25 dans le forum WordPress
    Réponses: 4
    Dernier message: 17/05/2016, 20h31
  2. suppression widget sur checkbox
    Par menthol34 dans le forum Tkinter
    Réponses: 5
    Dernier message: 27/04/2014, 21h24
  3. Réponses: 1
    Dernier message: 05/03/2011, 15h44
  4. Réponses: 0
    Dernier message: 12/12/2009, 16h40
  5. Probleme de suppression de Widget
    Par jderam dans le forum Débuter
    Réponses: 3
    Dernier message: 30/04/2009, 18h45

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