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

wxWidgets Discussion :

wxAuiManager et wxSizer


Sujet :

wxWidgets

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 63
    Par défaut wxAuiManager et wxSizer
    Bonjour,
    Code : 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    wxPanel* MyFrame::CreatePanel(){
     
      wxPanel* Panel = new wxPanel(this,wxID_ANY,wxDefaultPosition,wxDefaultSize,wxTAB_TRAVERSAL,_("panel"));
     
        wxBoxSizer*s1 = new wxBoxSizer(wxHORIZONTAL);
        m_choice = new wxChoice(Panel,ID_Choice,
                                   wxDefaultPosition, wxDefaultSize,
                                   0, NULL, wxLB_MULTIPLE |wxLB_ALWAYS_SB );
     
     
          s1->Add(1, 1, 1, wxEXPAND);
          s1->Add(new wxStaticText(Panel, wxID_ANY, wxT("Indice :")),0,wxALL,10);
          s1->Add(m_choice,0,wxALL,3);
          s1->Add(1, 1, 1, wxEXPAND);
          s1->SetItemMinSize((size_t)1, 50, 20);
     
          //essai
          wxBoxSizer* s2 = new wxBoxSizer(wxHORIZONTAL);
          m_sliderIdx=new wxSlider(Panel,ID_Slider_ind,0,0,20,wxDefaultPosition,wxSize(120,40),wxSL_HORIZONTAL);
          wxSpinCtrl* SpinCtrl_ind = new wxSpinCtrl(Panel,ID_Spin,
                                    _(""),
                                    wxDefaultPosition, wxSize(40,20),
                                    wxSP_ARROW_KEYS,
                                    0,20,0, _T("wxSpinCtrl"));
     
          s2->Add(1, 1, 1, wxEXPAND);
          s2->Add(new wxStaticText(Panel, wxID_ANY, wxT("Value:")),0,wxALL,10);
          s2->Add(m_sliderIdx,0,wxALL,0);
          s2->Add(SpinCtrl_ind,0,wxALL,10);
          s2->Add(1, 1, 1, wxEXPAND);
          s2->SetItemMinSize((size_t)1, 50, 20);
          //
     
     
     
          wxStaticBoxSizer* cont_sizer = new wxStaticBoxSizer(wxVERTICAL,Panel, _T("Indice"));
          cont_sizer->Add(s1);
          cont_sizer->Add(s2);
          Panel->SetAutoLayout(TRUE);
          Panel->SetSizer(cont_sizer);
     
     return Panel;
    Pour les besoins d'un projet j'ai été amené à construire une sorte de palette d'outils ( un peu comme Gimp) que je gère avec wxAuiManager ( voir ci-dessus) en faisant l'appel suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      m_mgr.AddPane(CreatePanel(), wxAuiPaneInfo().
                      Name(wxT("settings")).Caption(wxT("Settings")). 	
                      Dockable(false).Left().Layer(1).Position(2).Hide());

    Jusque là tout marche bien!
    http://picasaweb.google.com/olivier....AlbumSansTitre

    Comme vous pouvez le voir,je peux choisir un indice puis sa valeur. Or, je suis amené à fixer la valeur de plusieurs indices, les uns après les autres ( si je choisis le troisieme indice, je dois fixer la valeur des 2 premiers indices )...
    Je voudrais qu'en fonction de l'indice choisis , apparaissent plusieurs wxSlider...le problème, c'est que je souhaite pas toucher à la methode creatpanel() mais rajouter ces wxSlider dynamiquement.
    merci

  2. #2
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Le mieux serait de créer une classe qui hérite de "wxPanel" et ensuite de créer/détuire dynamiquement les "sliders" à l'intérieur de cette classe.

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 63
    Par défaut re
    Comment créer et détruire dynamiquement des sliders?
    Pour ce qui est de la classe, j'avais déjà essayé mais pour des raisons techniques ce n'est pas possible.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Août 2006
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 70
    Par défaut
    Quelque chose comme ( J'ai pris des wxTextCtrl ici ):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    //Dans la définition de ta classe
    		wxTextCtrl *ArrayTexte[CombienAuMaximum];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    //Dans une fonction
        for ( unsigned int i = 0;i < CombienOnEnVeut;i++ )
        {
            //Un texte
            ArrayTexte[i] = new wxStaticText( this, ID_TEXTARRAY, _( "Texte" ), wxDefaultPosition, wxDefaultSize, 0, _T( "txt") );
     
            //On peut ajouter ça à un sizer
            GridSizer1->Add( ArrayTexte[i], 1, wxALL | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, 5 );
        }
    pourrait marcher non ?

  5. #5
    Membre Expert
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Par défaut
    Pour ce qui est de la classe, j'avais déjà essayé mais pour des raisons techniques ce n'est pas possible.
    Je le fais régulièrement, qu'est ce qui bloque ?

    Pour créer/détruire les sliders.
    C'est un peu comme décrit -4ian-, sauf que je placerais wxID_ANY à la place de ID_TEXTARRAY

    Pour le "GridSizer1", on peut faire ainsi, mais le mieux c'est "GetSizer()" dans la classe courante de ton panel.

  6. #6
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 63
    Par défaut re
    Pour ce qui est de la classe, j'avais déjà essayé mais pour des raisons techniques ce n'est pas possible.
    Ce qui bloque c'est que j'ai de multiples inclusions ( voir http://www.developpez.net/forums/d59...enetre-parent/

    J'ai préféré pour ça , juste créer une methode ( createpanel() ) qui retourne mon panel...

Discussions similaires

  1. gestion du wxAuiManager
    Par Ivory69 dans le forum wxWidgets
    Réponses: 2
    Dernier message: 26/04/2007, 14h55
  2. Suppression d'un wxPanel et redimension du wxSizer conteneur
    Par mister3957 dans le forum wxWidgets
    Réponses: 1
    Dernier message: 28/02/2006, 22h39
  3. [wxWindows] wxSizer
    Par Heimdall dans le forum wxWidgets
    Réponses: 1
    Dernier message: 06/02/2004, 15h19

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