wxWidgets

wxWidgets - C++ - Programmation

Marsh Posté le 29-12-2004 à 20:35:42    

Salut,
 
Voilà, est ce que quelqu'un serait familier avec le framework wxWidgets, si oui serait t'il possible que cette meme personne m'explique brèvement le fonctionnement des objets wxBoxSizer.  Je n'arrive pas du tout a comprendre, ni meme  positionner trois label et trois textbox l'un en face de l'autre, ca me rend vraiment fou.   :fuck: GUI
 
Programming with wxBoxSizer  
 
merci d'avance


Message édité par ouned-coding le 31-12-2004 à 23:33:40
Reply

Marsh Posté le 29-12-2004 à 20:35:42   

Reply

Marsh Posté le 29-12-2004 à 23:21:08    

C'est facile de commencer mais on a vite fait de passer des heures à "jouer" sur les sizers et leurs @#!& de "flags"  [:airforceone] !

Code :
  1. struct f_fenetre_principale : wxFrame
  2. {
  3. // constructeur
  4. f_fenetre_principale() :
  5. wxFrame( static_cast<wxFrame*>(0), -1, _T("Programming with wxBoxSizer!" ), wxDefaultPosition, wxSize(305,130) )
  6. {
  7.  wxPanel* panel = new wxPanel( this, -1 );
  8.  wxBoxSizer* topsizer = new wxBoxSizer( wxVERTICAL );
  9.  wxFlexGridSizer* tabsizer = new wxFlexGridSizer( 3, 2, 0, 0 );
  10.  wxStaticText* text1 = new wxStaticText( panel, -1, _T("Première ligne :" ) );
  11.  wxStaticText* text2 = new wxStaticText( panel, -1, _T("Seconde ligne :" ) );
  12.  wxStaticText* text3 = new wxStaticText( panel, -1, _T("Dernière ligne :" ) );
  13.  wxTextCtrl* textctrl1 = new wxTextCtrl( panel, -1, _T("Saisie première ligne" ), wxDefaultPosition, wxSize(200,20) );
  14.  wxTextCtrl* textctrl2 = new wxTextCtrl( panel, -1, _T("Saisie seconde ligne" ), wxDefaultPosition,  wxSize(200,20) );
  15.  wxTextCtrl* textctrl3 = new wxTextCtrl( panel, -1, _T("Saisie dernière ligne" ), wxDefaultPosition,  wxSize(200,20) );
  16.  tabsizer->Add( text1,  0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );
  17.  tabsizer->Add( textctrl1, 0, wxALIGN_CENTER | wxALL, 6 );
  18.  tabsizer->Add( text2,  0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );
  19.  tabsizer->Add( textctrl2, 0, wxALIGN_CENTER | wxALL, 6 );
  20.  tabsizer->Add( text3,  0, wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL );
  21.  tabsizer->Add( textctrl3, 0, wxALIGN_CENTER | wxALL, 6 );
  22.  topsizer->Add( tabsizer, 0, wxALIGN_CENTER_HORIZONTAL, 6 );
  23.  panel->SetSizer( topsizer );
  24.  panel->SetAutoLayout( TRUE );
  25.  panel->Layout();
  26. }
  27. };
  28. class application : public wxApp
  29. {
  30. public:
  31.     virtual bool OnInit() {
  32.  f_fenetre_principale* fenetre_principale = new f_fenetre_principale;
  33.  fenetre_principale->Show( TRUE );
  34.  return TRUE;
  35. };
  36. };
  37. IMPLEMENT_APP( application )


Message édité par xterminhate le 30-12-2004 à 09:47:43

---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 29-12-2004 à 23:25:22    

http://perso.wanadoo.fr/xterminhate/screen998.jpg


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 29-12-2004 à 23:52:25    

lu,
 
 
Ma foi c'est exactement ce qu'il me fallait, thx, dommage pour le manque de commentaire et surtout d'explications même en sachant que c'est relativement simple.  Vais essayer de me les fabriquer en  comparant avec la 'miserable' doc que j'ai.
 

Citation :

C'est facile de commencer mais on a vite fait de passer des heures à "jouer" sur les sizers et leurs @#!& de "flags"

Tout à fait d'accord avec toi et il n'y a pas que ces  @!*$ de sizers ;)
 
Tu connais une autre solution ( mise à part les editeurs de dialogs )   ?
 
 
 

Reply

Marsh Posté le 30-12-2004 à 09:12:08    

Dans l'ordre, tu crées :
1) une wxFrame (cadre de la fenetre),
2) un wxPannel (partie grise windows),
3) un wxBoxSizer qui va devenir le sizer du pannel,
4) un wxGridSizer ou wxFlexGridSizer qui va permettre de placer des éléments graphiques en 'tableau'
 
Ensuite, tu ajoutes
5) les éléments graphiques au wxGridSizer : wxGridSizer*->Add(wxXXXXX*)
6) le wxGridSizer au BoxSizer : wxBoxSizer*->Add(wxGridSizer*),
 
Enfin, tu places
7) le BoxSizer dans le pannel : wxPannel*->SetSizer(wxBoxSizer*),
 
Pour les flags, je te laisse découvrir.... :-)


Message édité par xterminhate le 30-12-2004 à 09:14:26

---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 30-12-2004 à 09:15:51    

Les éléments graphiques doivent appartenir à une classe wxPannel (ou ses dérivés) et non à un wxSizer (et ses dérivés) :
wxStaticText( wxPannel*, -1 ....


Message édité par xterminhate le 30-12-2004 à 09:16:36

---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 30-12-2004 à 11:56:15    

xterminhate a écrit :

Les éléments graphiques doivent appartenir à une classe wxPannel (ou ses dérivés) et non à un wxSizer (et ses dérivés) :
wxStaticText( wxPannel*, -1 ....


 
Tu manges du poisson panné ce midi ?  ;)

Reply

Marsh Posté le 30-12-2004 à 12:50:18    

lol Lams,  
 
 
Et bien merci pour ces précisions,  maintenant ça donne un peu plus de sens a ce qui est expliqué dans la doc.
 
 
bonne journée  :)

Reply

Marsh Posté le 30-12-2004 à 16:04:57    

Juste pour info, pour  le redimenssionnement du dialog (wxDialog),
 
mydlg->Fit( );  et tout se met en place correctement.

Reply

Marsh Posté le 30-12-2004 à 18:20:50    

Lol. Merci de me quoter, je peux plus corriger maintenant ! ;-)
 
Merci pour le fit(). On arrive a faire des choses biens avec wxWidget. Si tu trouves un éditeur de dialogue sympa, ca m'interesse.


Message édité par xterminhate le 30-12-2004 à 18:21:22

---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 30-12-2004 à 18:20:50   

Reply

Marsh Posté le 30-12-2004 à 18:41:16    

Citation :

Si tu trouves un éditeur de dialogue sympa, ca m'interesse.


 
 
Personnelement je te conseille d'essayer DialogBlocks ( http://www.anthemion.co.uk/dialogblocks/ )
 
Il super complet, et n'a pas le default de nous sortir du code pourri en sortie, donc facil a modifier et à re-utiliser.  
 
 
>>  On croirait presque coder en VB  :sweat:    ( ok je sors )

Reply

Marsh Posté le 31-12-2004 à 12:12:36    

balèze, il coûte que 30 € pour les étudiants.. ça a l'air pas mal en plus
 
sinon, y'en a beaucoup qui prototypent leurs applis wx avec wxPython ? j'ai lu que ça se faisait, vu que c'est assez simple wxPython, mais comme ils ont rajouté des trucs, il doit falloir faire gaffe à pas les utiliser

Reply

Marsh Posté le 31-12-2004 à 13:19:41    

Oui ca pour avoir du  monde qui developpe des applications graphiques en python (wxPython), y en a un bon paquet, mais que veux tu dire par là > mais comme ils ont rajouté des trucs, il doit falloir faire gaffe à pas les utiliser ??

Reply

Marsh Posté le 31-12-2004 à 13:41:03    

ben, si tu fais un prototype rapidement en python, pour l'implémenter après en C++, faut faire gaffe de pas utiliser avec wxPython, des trucs qui n'existent pas en wxWidgets sinon après pour porter tout en C++ ça va être compliqué
 
 
par contre, je comprends pas pourquoi DialogBlocks me dit que j'ai pas compilé wxWidgets pour VC++, j'ai l'impression qu'il cherche pas au bon endroit

Reply

Marsh Posté le 31-12-2004 à 13:56:42    

ah oui d'accord,   pour dialogblocks ...  (cf. topic http://forum.hardware.fr/forum2.ph [...] 0&subcat=0 )
 
J'ai le meme probleme, je ne peux rien compiler. J'attends une reponse mais apparement pas très connue des bataillons.

Reply

Marsh Posté le 31-12-2004 à 23:32:06    

Salut, bonne année  ( :( )
 
 
What is wx-devcpp ?
 
wx-devcpp is an extension of DevC++ with a Form Designer for the Amazing Multiplatform toolkit wx-Widgets. The source is based on Sep 18th 2004 of DevC++.  
 
http://wxdsgn.sourceforge.net/faq.html


Message édité par ouned-coding le 01-01-2005 à 00:45:01
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed