Membres inscrits :2359
Membres en ligne : 0
Invités en ligne : 7


|
Conversation (Résolue) : Problème avec wxBoxSizer |
RASC (Membre)
Inscrit le : 06-01-2013
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne |
Salut,
j'ai un petit problème avec le wxBoxSizer, est ce que quelqu'un peut me donner un coup de main, voici le code:
Code wxWidgets: //Label Code codeStaticText = new wxStaticText( this, wxID_ANY, wxT( "Colour Code" ) ); codeStaticText->SetBackgroundColour( "#FFFFFF" ); codeStaticText->SetSize( 50, 10 ); //Label Symbol symbolStaticText = new wxStaticText( this, wxID_ANY, wxT( "Symbol" ) ); symbolStaticText->SetBackgroundColour( "#FFFFFF" ); symbolStaticText->SetSize( 50, 10 ); //Panel panel = new wxPanel( this, wxID_ANY ); panel->SetBackgroundColour( "#FFFFFF" ); //Main Horizontal Box mainBoxSizer = new wxBoxSizer( wxHORIZONTAL ); //Horizontal Labels Box labelBoxSizer = new wxBoxSizer( wxHORIZONTAL ); labelBoxSizer->Add( codeStaticText, 0, wxALL, 10 ); labelBoxSizer->Add( symbolStaticText, 0, wxALL, 10 ); //Add labels box to main box mainBoxSizer->Add( labelBoxSizer, 0, wxALL, 10 ); //Panel Box Sizer panelBoxSizer = new wxBoxSizer( wxHORIZONTAL ); panelBoxSizer->Add( panelBoxSizer ); //Add panel box to main box mainBoxSizer->Add( panelBoxSizer, 0, wxALL, 10 ); //Set Sizer SetSizer( mainBoxSizer ); Mon wxPanel n’apparaît pas dans ma fenêtre et ça crashe.
Merci, RASC.
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Le problème vient à mon avis de la portion de code suivante :
Code wxWidgets://Panel Box Sizer panelBoxSizer = new wxBoxSizer( wxHORIZONTAL ); panelBoxSizer->Add( panelBoxSizer );
Un wxBoxSizer qui s'ajoute à lui même, et qui ne contient rien ...
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
RASC (Membre)
Inscrit le : 06-01-2013
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne |
C'est vrai j'ai zappé ça, ce que je voulais en fait c'est de mettre mon panel. Maintenant j'ai changé ça, mais je n'arrive toujours pas à voir mon panel, je vois un tout petit point blanc. Ce que je voudrais c'est que mon panel occupe toute la partie droite de mainBoxSizer.
Salutations, RASC.
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Salut.
Dans ce cas, tu remplaces
Code wxWidgets: //Panel Box Sizer panelBoxSizer = new wxBoxSizer( wxHORIZONTAL ); panelBoxSizer->Add( panelBoxSizer ); //Add panel box to main box mainBoxSizer->Add( panelBoxSizer, 0, wxALL, 10 ); par
Code wxWidgets: //Add panel to main box mainBoxSizer->Add( panel, 0, wxALL, 10 ); et ça devrait le faire.
@+ Xav'
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
RASC (Membre)
Inscrit le : 06-01-2013
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci pour tes réponses Xaviou, je viens d'essayer ce que tu m'as indiqué mais ça ne marche pas
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Tu devrais re-poster ton code, et expliquer ce que tu veux faire plus précisément : ça sera plus simple pour t'aider.
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
RASC (Membre)
Inscrit le : 06-01-2013
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne |
Voilà le code ( mais en fait c'est presque le même ):
Code wxWidgets: MainFrame::MainFrame( const wxString &title ) : wxFrame( NULL, wxID_ANY, title ) { Maximize( true ); Centre(); //Menu File fileMenu = new wxMenu; fileMenu->Append( ID_OnOpen, wxT( "&Open\tALT-O" ), wxT( "Open your file" ) ); Connect( ID_OnOpen, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnOpen ) ); //Menu Create createMenu = new wxMenu; createMenu->Append( ID_OnCreate, wxT( "Cross Stitch" ), wxT( "Create your Cross Stitch" ) ); Connect( ID_OnCreate, wxEVT_COMMAND_MENU_SELECTED, wxCommandEventHandler( MainFrame::OnCreate ) ); //Bar Menu menuBar = new wxMenuBar; menuBar->Append( fileMenu, wxT( "&File" ) ); menuBar->Append( createMenu, wxT( "&Create" ) ); SetMenuBar( menuBar ); //Status Bar statusBar = new wxStatusBar( this, wxID_ANY, wxST_SIZEGRIP ); this->SetStatusBar( statusBar ); statusBar->SetStatusText( wxT( "Ready" ) ); //Label Code codeStaticText = new wxStaticText( this, wxID_ANY, wxT( "Colour Code" ) ); codeStaticText->SetBackgroundColour( "#FFFFFF" ); codeStaticText->SetSize( 50, 10 ); //Label Symbol symbolStaticText = new wxStaticText( this, wxID_ANY, wxT( "Symbol" ) ); symbolStaticText->SetBackgroundColour( "#FFFFFF" ); symbolStaticText->SetSize( 50, 10 ); //Panel panel = new wxPanel( this, wxID_ANY ); panel->SetBackgroundColour( "#FFFFFF" ); //panel->SetSize(100,100); //Main Horizontal Box mainBoxSizer = new wxBoxSizer( wxHORIZONTAL ); //Horizontal Labels Box labelBoxSizer = new wxBoxSizer( wxHORIZONTAL ); labelBoxSizer->Add( codeStaticText, 0, wxALL, 10 ); labelBoxSizer->Add( symbolStaticText, 0, wxALL, 10 ); //Add labels box to main box mainBoxSizer->Add( labelBoxSizer, 0, wxALL, 10 ); //Panel Box Sizer panelBoxSizer = new wxBoxSizer( wxHORIZONTAL ); panelBoxSizer->Add( panel ); //Add panel box to main box mainBoxSizer->Add( panel, 0, wxALL, 10 ); //Set Sizer SetSizer( mainBoxSizer ); } Ce que prétend c'est d'avoir du côté gauche les deux wxStaticText et le reste le wxPanel. Apés je veux utiliser le wxPanel pour y créer une image. Mais je n'arrive pas à voir le wxPanel, je vois un tout petit point blanc à côté de wxStaticText.
Salutations, RASC.
|
|
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne |
Essayes de remplacer
Code wxWidgets: //Add panel box to main box mainBoxSizer->Add( panel, 0, wxALL, 10 ); par
Code wxWidgets: //Add panel box to main box mainBoxSizer->Add( panel, 1, wxALL|wxEXPAND, 10 );
En fait, comme tu ne donnes aucune taille à ton panel lors de sa création, il prends la taille minimale. Et comme tu l'ajoutes avec le coefficient "0" et non extensible, il reste en taille minimale.
Si tu veux lui donner une taille spécifique, tu peux le faire en le créant :
Code wxWidgets:panel = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxSize(100, 100) ); Dans ce cas, en laissant la ligne d'ajout au sizer telle-quelle, il aura dès le début la bonne taille, et la taille de la fenêtre sera adaptée tout de suite si à la fin de ton code tu ajoutes :
Code wxWidgets:mainBoxSizer->SetSizeHints(this);
|
Le nouveau portail wxWidgets francophone : www.wxdev.fr Ben en fait, vous y êtes déjà ... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
|
RASC (Membre)
Inscrit le : 06-01-2013
Messages: 15
Snippets: 0
Tutoriels: 0
Hors ligne |
Merci Xaviou c'est ça que je voulais faire .
Salutations, RASC.
|
|
|