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
leve est le nom de mon combo, et dans le slot changeLevel,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 connect(level,SIGNAL(currentIndexChanged(int)),this,SLOT(changeLevel(int));
j'ai tenté différentes choses mais rien ne marche ou ca plante..
j'ai tenté d'abord un
donc je ne détruis pas l'ancien objet Plot...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 obj_plot = new Plot(args)
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
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.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 delete obj_plot; obj_plot = new Plot(args);
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
cela marche mais la fenetre s'encombre des dessins dessinés auparavant.
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);
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
J'aurai vraiment pensé qu'en supprimant l'objet du layout, celui disparaitrait.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 spec->attach(this)
Mais c'est comme s'il etait en fait dessiné sur la fenetre contenant ce dernier.
Partager