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:
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:
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:
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:
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:
1
2 spec->attach(this)
Mais c'est comme s'il etait en fait dessiné sur la fenetre contenant ce dernier.