[wxWidgets] Utilisation de wxSizer et dérivés, erreur de placement

Résolu
cs_Sunsawe Messages postés 64 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 5 avril 2007 - 29 juin 2005 à 17:34
cs_Sunsawe Messages postés 64 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 5 avril 2007 - 30 juin 2005 à 13:21
Bonjour à tous,

Voilà je tente d'utiliser ce procédé pour disposer des boutons et du texte dans une fenêtre.

alors voici mon code qui se situe dans le constructeur de ma frame:





fen=new wxStaticBox(this,-1,"Controle",wxDefaultPosition,wxSize(200,200),0,"Controle");



wxBoxSizer *Mysizer = new wxBoxSizer( wxVERTICAL );

wxStaticBoxSizer *MyFensizer = new wxStaticBoxSizer(fen, wxVERTICAL );



wxStaticText *label;

wxStaticText *label2;



label=new wxStaticText(this,-1,"Voici le texte qui doit etre affiche",wxDefaultPosition,wxDefaultSize,0,"Label");

label2=new wxStaticText(this,-1,"Et ben",wxDefaultPosition,wxDefaultSize,0,"Label2");



MonBouton = new wxButton(this,ID_PREC,"Precedent");

MonBouton2 = new wxButton(this,ID_SUIV,"Suivant");

MonBouton3 = new wxButton(this,ID_QUIT,"Quitter");



MyFensizer->Add(label2);

MyFensizer->Add(MonBouton);

MyFensizer->Add(MonBouton2);

MyFensizer->Add(MonBouton3);

fen->SetSizer(MyFensizer);



Mysizer->Add(label);

Mysizer->Add(fen);



SetSizer(Mysizer);





Le problème, c'est que j'obtiens un compactage
des éléments. Je veux dire par là, que tous les éléments se retrouvent
supperposés au coin haut gauche de la frame. Je dis bien tous
exactement comme si les sizers n'existaient pas.



Quelqu'un pourrait m'éclairer?

Merci

3 réponses

fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
29 juin 2005 à 18:35
Ceci doit répondre à ton problème:



// Ce boxsizer est la pour avoir un espace autour du staticbox

wxBoxSizer* bSizer1 = new wxBoxSizer(wxHORIZONTAL);

this->SetSizer(bSizer1);



// Création d'un staticbox avec sizer vertical

wxStaticBox* sBox1 = new wxStaticBox(this, wxID_ANY, _("Controle"));

wxStaticBoxSizer* sBoxSizer1 = new wxStaticBoxSizer(sBox1, wxVERTICAL);

bSizer1->Add(sBoxSizer1, 1, wxGROW|wxALL, 5);



// création du statictext

wxStaticText* sText1 = new wxStaticText(this, wxID_STATIC,
_("Voici le texte qui doit etre affiche"), wxDefaultPosition,
wxDefaultSize, 0);

sBoxSizer1->Add(sText1, 0, wxALIGN_CENTER_HORIZONTAL|wxALL|wxADJUST_MINSIZE, 5);



// Création d'un sizer horizontal pour les boutons

wxBoxSizer* bSizer2 = new wxBoxSizer(wxHORIZONTAL);

sBoxSizer1->Add(bSizer2, 0, wxALIGN_CENTER_HORIZONTAL|wxALL, 5);



// Création des boutons

wxButton* PrecButton = new wxButton( this, ID_PREC, _("Precedent"), wxDefaultPosition, wxDefaultSize, 0 );

bSizer2->Add(PrecButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);

wxButton* NextButton = new wxButton( this, ID_SUIV, _("Suivant"), wxDefaultPosition, wxDefaultSize, 0 );

bSizer2->Add(NextButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);

wxButton* QuitButton = new wxButton( this, ID_QUIT, _("Quitter"), wxDefaultPosition, wxDefaultSize, 0 );

bSizer2->Add(QuitButton, 0, wxALIGN_CENTER_VERTICAL|wxALL, 5);





A+



FredCL
3
fredcl Messages postés 547 Date d'inscription mercredi 8 janvier 2003 Statut Membre Dernière intervention 7 octobre 2007 1
29 juin 2005 à 18:20
Bonjour,



Un conseil utilises DialogBlock (http://www.anthemion.co.uk/dialogblocks/)

La version non enregistrée te permet de mettre 30 contrôles et sizer
dans ton dialog/frame. C'est suffisant pour donner une idée de ce qu'il
faut faire, après tu termine à la main.

Sinon tu peux toujours jetter un coup d'oeil à mes sources qui utilises
wxWidgets ici ou sur mon site (http://cfred.free.fr). ça peut t'aider à
comprendre le positionnement avec les sizers.



A+



FredCL
0
cs_Sunsawe Messages postés 64 Date d'inscription mardi 21 juin 2005 Statut Membre Dernière intervention 5 avril 2007
30 juin 2005 à 13:21
Merci à partir de ton modèle, j'ai pu me débrouiller.
0