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

Discussion :

Problème avec QComboBox, layout et changement de map

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Par défaut
    Bonjour,

    j'ai de nouveau un gros souci que je vais vous exposer :

    Pour faire simple, j'ai une QMainWindow utilisant le QMdiArea.
    Dans ce dernier je mets une ou plusieurs autres fenetres dérivées de QFrame.
    Jusque là tout va bien.
    Dans ces fenêtre, il a une QComboBox, et un autre widget : un objet Plot dérivée de QwtPlot qui permet d'afficher une map.
    les fenetre possèdent un attribut privée de type Plot appelons le
    Plot *obj_plot;
    Quand je construis la fenetre pour la première fois, tout va bien, je fais mon obj_plot = new Plot(args...), j'initialise le layout également attribut privé d'une fenetre et je place mon obj_plot dedans tout va bien...


    Maintenant j'aimerais qu'en changeant d'item dans la QComboBox, cela affiche une autre map

    Donc j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    connect(level,SIGNAL(currentIndexChanged(int)),this,SLOT(changeLevel(int));
    leve est le nom de mon combo, et dans le slot changeLevel,
    j'ai tenté différentes choses mais rien ne marche ou ca plante..
    j'ai tenté d'abord un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    obj_plot = new Plot(args)
    donc je ne détruis pas l'ancien objet Plot...

    et ensuite cela ne suffit pas, je vois toujours l'ancien, aucun changement. J'ai tenté des obj_plot.setVisible(true) rien du tout.

    Alors j'ai poursuivi en tentant un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    delete obj_plot;
    obj_plot = new Plot(args);
    si je mets juste le delete, ca marche la map disparait qd je change d'item, evidemment ca bug si je change de nouveau car plus rien a delete.
    Si j'ajoute la construction, ca ne bug plus mais evidemment le nouvel objet est placé nul part, enfin je suppose donc il faut le remettre dans le layout, correct ?

    mais si je fais ca.. alors j'ai le rapport d'erreur etc.. je ne comprends pas pourquoi.

    Une idée ?
    Merci d'avance

    Je vais donner un peu plus de détails.

    je fais maintenant dans le slot changeLevel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    getLayout()->removeWidget(obj_plot);
    obj_plot = new Plot(mes arguments);
    getLayout().addWidget(obj_plot);
    cela marche mais la fenetre s'encombre des dessins dessinés auparavant.

    donc comme je l'ai deja dit Plot dérive de QwtPlot

    Dans le constructeur de Plot, je crée un QwtPlotSpectrogram appelé spec
    et je fais tout un tas de chose y compris un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    spec->attach(this)
    J'aurai vraiment pensé qu'en supprimant l'objet du layout, celui disparaitrait.
    Mais c'est comme s'il etait en fait dessiné sur la fenetre contenant ce dernier.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 62
    Par défaut
    Bon au final je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	obj_plot->getQwtPlotSpectrogram()->detach();
    	obj_plot->setVisible(false);
    	delete obj_plot;
    	getLayout()->removeWidget(obj_plot);
    	obj_plot = new Plot(arguments);
    	getLayout()->addWidget(obj_plot);
    et cela fonctionne bien.

    Y'a t-il quelquechose à ajouter ou tout est fait correctement?

Discussions similaires

  1. probléme avec tomcat sous eclipse (changement de workspace)
    Par rwikus09 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/10/2010, 12h23
  2. Problème avec la génération de fichiers de mapping
    Par marwa21 dans le forum Hibernate
    Réponses: 0
    Dernier message: 16/06/2010, 12h40
  3. Problème avec Struts-layout Date
    Par Caprissa dans le forum Struts 1
    Réponses: 1
    Dernier message: 23/07/2009, 13h06
  4. Problème avec setLayout(layout);
    Par lolotte dans le forum Débuter
    Réponses: 2
    Dernier message: 25/11/2008, 11h44
  5. problème avec struts-layout
    Par khayri dans le forum Struts 1
    Réponses: 1
    Dernier message: 16/04/2007, 10h36

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