wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 3

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Tag wxALIGN_CENTER pour Sizer ne marche pas et problème de dimension.
Conversation (Résolue) : Tag wxALIGN_CENTER pour Sizer ne marche pas et problème de dimension.
05-06-2009 20:05:27  Tag wxALIGN_CENTER pour Sizer ne marche pas et problème de dimension. #1
congelli501 (Membre)
Inscrit le : 08-06-2008
Messages: 46
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Bonjour, voici un code simplifié :

Code wxWidgets:

MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(NULL, -1, title, pos, size, style)
{
    wxBoxSizer* MainSizer = new wxBoxSizer( wxVERTICAL );
 
    m_MainPanel = new MainPanel(this, wxID_ANY, wxDefaultPosition, wxSize(200, 500));
    MainSizer->Add(m_MainPanel, 0, wxALIGN_CENTER, 0);
 
    SetSizer( MainSizer );
}


m_MainPanel est le panel pricipal. Il devrait être :
- Centré dans la frame, ce n'est le cas que verticalement, dans le sens du wxBoxSizer.
- Avoir une taille de (200, 500).
Mais ce n'est pas le cas.

Avez vous une explication ?

J'utilise la derniére version de wxWidgets GTK.

Merci d'avance ;-) !

Mes programmes open sources !
On dit que la Grèce antique beaucoup d'influence sur notre culture... C'est vrai : la chute d'Athènes a eu lieu en 404 avant JC. Ca vous rappelle quelque chose ?
17-06-2009 09:10:35  Re: Tag wxALIGN_CENTER pour Sizer ne marche pas et problème de dimension. #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
congelli501:
- Centré dans la frame, ce n'est le cas que verticalement, dans le sens du wxBoxSizer.
Heu... Avec ton code, chez moi, il est centré horizontalement, et reste accroché en haut (donc, non centré verticallement).
Il suffit d'ajouter un "espace extensible" avant et après le panel pour qu'il se centre sorrectement

congelli501:
- Avoir une taille de (200, 500).
En fait, il a bien la bonne taille, mais la fenêtre ne s'adapte pas automatiquement, c'est pour ça que ça ne se voit pas.

Voici un code corrigé qui devrait faire l'affaire :

Code wxWidgets:

MainFrame::MainFrame(const wxString& title, const wxPoint& pos, const wxSize& size, long style) : wxFrame(NULL, -1, title, pos, size, style)
{
    wxBoxSizer* MainSizer = new wxBoxSizer( wxVERTICAL );
 
    m_MainPanel = new MainPanel(this, wxID_ANY, wxDefaultPosition, wxSize(200, 500));
    MainSizer->AddStretchSpacer(1);
    MainSizer->Add(m_MainPanel, 0, wxALIGN_CENTER, 0);
    MainSizer->AddStretchSpacer(1);
 
    SetSizer( MainSizer );
    MainSizer->SetSizeHints(this);
}

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
17-06-2009 15:33:35  Re: Tag wxALIGN_CENTER pour Sizer ne marche pas et problème de dimension. #3
congelli501 (Membre)
Inscrit le : 08-06-2008
Messages: 46
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Merci beaucoup, ce code marche très bien !

Xaviou:
congelli501:
- Centré dans la frame, ce n'est le cas que verticalement, dans le sens du wxBoxSizer.
Heu... Avec ton code, chez moi, il est centré horizontalement, et reste accroché en haut (donc, non centré verticallement).
Si tu traces deux droites qui se croisent au milieu de ton écran, seule la droite verticale sera au centre du panel, il est donc, dans nos deux cas, centré verticallement (comme l'indique le "wxBoxSizer( wxVERTICAL )" : centré par rapport à la verticale) ;).

Mes programmes open sources !
On dit que la Grèce antique beaucoup d'influence sur notre culture... C'est vrai : la chute d'Athènes a eu lieu en 404 avant JC. Ca vous rappelle quelque chose ?
17-06-2009 16:15:56  Re: Tag wxALIGN_CENTER pour Sizer ne marche pas et problème de dimension. #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1383
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Allez, juste pour chipoter :
congelli501:
Si tu traces deux droites qui se croisent au milieu de ton écran, seule la droite verticale sera au centre du panel, il est donc, dans nos deux cas, centré verticallement (comme l'indique le "wxBoxSizer( wxVERTICAL )" : centré par rapport à la verticale) ;).
Pas d'accord avec le raisonnement : pour moi, la droite verticale est centrée horizontalement (pour vérifier qu'elle soit bien centrée, tu mesures l'espace entre la droite et les bords de l'écran, et pour mesurer, tu mets la règle horizontale).

Bref, comme je l'ai dit plus haut, c'est juste pour chipoter. ;)

@+
Xav'

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà...
17-06-2009 19:00:08  Re: Tag wxALIGN_CENTER pour Sizer ne marche pas et problème de dimension. #5
congelli501 (Membre)
Inscrit le : 08-06-2008
Messages: 46
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Oui, c'est vrai aussi.
Je ne pense pas qu'il y est une vraie reponse : les gens mélangent apparement les deux sur le net.

PS : Désolé, j'ai marqué "(comme l'indique le "wxBoxSizer( wxVERTICAL )"", ça veut rien dire : c'est la déclaration du sizer.

Mes programmes open sources !
On dit que la Grèce antique beaucoup d'influence sur notre culture... C'est vrai : la chute d'Athènes a eu lieu en 404 avant JC. Ca vous rappelle quelque chose ?
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Tag wxALIGN_CENTER pour Sizer ne marche pas et problème de dimension.