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 :

Dificultés à créer un layout


Sujet :

wxWidgets

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Points : 13
    Points
    13
    Par défaut Dificultés à créer un layout
    Bonjour,

    Je débute sous wxWidget et dans les interfaces graphiques en général (ceci est ma première), et j'éprouve des difficultés à mettre en place le layout que je souhaites avec wxWidget.

    Mon problème est que je n'arrive pas à créer de sous panneaux et à les positionner entre eux.

    Il y a bien un exemple dans les tutoriaux de wxWidget, mais étonnement je n'arrive pas à le faire fonctionner (http://zetcode.com/tutorials/wxwidge...outmanagement/ : tuto wxBoxSizer).

    En fait mon premier panel est toujours par dessus l'autre et s'étend au maximum.

    Pour l'instant j'ai pu obtenir ceci à l'aide d'un flexGridSizer inclus dans un boxSizer (un autre des tutoriaux).



    Ce que je voudrais devrais plus ressembler à ceci:



    Pourriez vous m'aider pour trouver la bonne méthode ?
    Merci

  2. #2
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Salut,
    Il faudrait que tu nous montres le code de ta création des sizer, d'ajouts des différents items et de l'ajout du sizer à la fenêtre.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 30
    Points : 13
    Points
    13
    Par défaut
    Pour l'instant je n'ai plus ce code... j'essaie d'Avancer au plus vite dans mon programme et si je peux je reviendrais dessus. Je perds déjà des journées en problémes de compilation wxWidget et d'incompatibilités ...

    Ça c'est mon code actuel:

    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
     
     
    // Fichier " EditeurTxTApp.cpp "
    #include <wx/wx.h>
    #include "main.h"
    #include "wxMainPanel.h"
     
    IMPLEMENT_APP(EditeurTxTApp)
     
    bool EditeurTxTApp::OnInit() {
     
        wxMainPanel *frame = new wxMainPanel("Bienvenue",450, 300);
        frame->Show(TRUE);
        SetTopWindow(frame);
        return true;
     
    }

    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
    43
    44
    45
    46
    47
    48
     
     
    // Class automatically generated by Dev-C++ New Class wizard
    #include <wx/wx.h>
    #include "wxMainPanel.h" // class's header file
     
     
    wxMainPanel::wxMainPanel (const wxString & titre,int width,int height) :
        wxFrame ( (wxFrame *) NULL,-1,titre,wxPoint(-1, -1),wxSize(270, 220))
        {
            //Création du panel principal qui engloble la fenêtre
     
     
            wxPanel *mainPanel = new wxPanel(this,-1);
           // mainPanel->SetBackgroundColour(col1);
     
            wxBoxSizer *hMainPanel = new wxBoxSizer(wxHORIZONTAL);
            wxFlexGridSizer *fgs = new wxFlexGridSizer(4,2,9,25);
     
            wxButton *addByFile = new wxButton(mainPanel,-1,wxT("Ajouter un fichier"));
            wxButton *addDirectly = new wxButton(mainPanel,-1,wxT("Ajouter par saisie"));
            wxButton *addByYear = new wxButton(mainPanel,-1,wxT("Ajouter par année"));
            wxButton *findByName = new wxButton(mainPanel,-1,wxT("Rechercher un lieu par nom"));
            wxButton *findByYear = new wxButton(mainPanel,-1,wxT("Rechercher des lieux par année"));
     
            wxStaticText *textAreaString = new wxStaticText(mainPanel,-1,wxT("Affichage:"));
     
            wxTextCtrl *textArea = new wxTextCtrl(mainPanel,-1);
     
            fgs->Add(addByFile,1, wxEXPAND);
            fgs->Add(findByName,1, wxEXPAND);
            fgs->Add(addDirectly,1, wxEXPAND);
            fgs->Add(findByYear,1, wxEXPAND);
            fgs->Add(addByYear,1, wxEXPAND);
            fgs->Add((wxWindow*)NULL,1, wxEXPAND);
            fgs->Add(textAreaString,1, wxEXPAND);
            fgs->Add(textArea,1, wxEXPAND);
     
            fgs->AddGrowableRow(3,1);
            fgs->AddGrowableCol(1,1);
     
            hMainPanel->Add(fgs,1,wxALL | wxEXPAND,15);
            mainPanel->SetSizer(hMainPanel);
     
            }
     
    // Idem rien de spécial dans le destructeur
    wxMainPanel::~wxMainPanel() {}
    Ce code compile et fonctionne sous devCpp qui compile avec gcc 3.4.5...

    J'ai pu compiler wxwidget avec gcc 4.5.2 TMC (la compil plante avec gcc 4.5.2 et 4.5.0). En dynamique, monolithique, et unicode.

    J'utilise cette compilation avec codeblocks (entre les divers problèmes de librairies non trouvées, mal nommées ....) mais à la compilation de mon programme j'ai l'erreur suivante:

    wxMainPanel *frame = new wxMainPanel("Bienvenue",450, 300);:
    D:\Dropbox\TP4\Milan_TP4\main.cpp|11|error: no matching function for call to `wxMainPanel::wxMainPanel(const char[10], int, int)'|

    Chose amusante, si je copie mon devCpp sur mon laptop, j'ai exactement la même erreur.

    Or mon programme sera testé avec gcc 4.5.0 et je ne sais quelle version de wxWidget....

    Bref, j'ai l'impression que je vais droit dans le mur et d'être totalement impuissant face à cette situation.

  4. #4
    Membre averti Avatar de wxXav
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Décembre 2008
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur amateur

    Informations forums :
    Inscription : Décembre 2008
    Messages : 214
    Points : 354
    Points
    354
    Par défaut
    Hello

    Citation Envoyé par Zangdaarr Voir le message
    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
     
     
    // Fichier " EditeurTxTApp.cpp "
    #include <wx/wx.h>
    #include "main.h"
    #include "wxMainPanel.h"
     
    IMPLEMENT_APP(EditeurTxTApp)
     
    bool EditeurTxTApp::OnInit() {
     
        wxMainPanel *frame = new wxMainPanel("Bienvenue",450, 300);
        frame->Show(TRUE);
        SetTopWindow(frame);
        return true;
     
    }
    Comme l'indique le message d'erreur, le problème vient de la ligne 11 : tu crées un objet wxMainPanel en donnant le titre avec de simples guillemets (ce qui définit un const char*) alors que tu utilises apparemment les libs Unicode.
    Dans ton cas, il faudrait donner ta chaine de caractères sous la forme d'un wchar_t de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wxMainPanel *frame = new wxMainPanel( L"Bienvenue" ,450, 300);
    Le hic, c'est que si ultérieurement, tu as besoin, pour une raison quelconque, de compiler ton application en Ansi, il faudra repasser toutes les chaines de caractères en const char*.

    Il suffit de modifier cette ligne de la façon suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wxMainPanel *frame = new wxMainPanel( wxT("Bienvenue"),450, 300);
    Avec la macro wxT, tu n'as pas à te soucier de savoir si tu es en, Unicode ou en Ansi : tu spécifies tes chaines de caractères avec, et la macro se charge d'appliquer le bon format.

    @+
    Xav'

Discussions similaires

  1. Réponses: 7
    Dernier message: 12/12/2014, 19h18
  2. Comment créer un layout xml à partir d'une customize view ?
    Par dév20 dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 02/02/2014, 04h40
  3. Editeur WYSIWYG pour créer des Layout dynamiques
    Par velikovikc dans le forum Composants graphiques
    Réponses: 1
    Dernier message: 29/03/2013, 18h10
  4. [Struts-Layout] Créer une Menu par Code
    Par pjmvn dans le forum Struts 1
    Réponses: 2
    Dernier message: 15/12/2008, 11h34
  5. Réponses: 10
    Dernier message: 26/05/2008, 17h10

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