Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 10/08/2006, à 13:15

whiskykoka

wxwidgets c++ mise en page

hello !

voila, j'aimerai une fenetre comme celle ci :
_________________________________________
|  ______________________________________  |
| |                                                                  | |
| |                                                                  | |
| |                                                                  | |
| |                          1                                      | |
| |                                                                  | |
| |                                                                  | |
| |                                                                  | |
| |                                                                  | |
| |                                                                  | |
| |______________________________________| |
|  ______________________________________  |
| |                                                                  | |
| |                             2                                   | |
| |_______________________________ ______| |
|________________________________________|

j'ai donc fait 3 wxBoxSizer :
     - un grand qui contient les deux autres,
     - le "2" qui contient deux bouttons,
     - le "1" qui contient un autre objet en fonction que l'on clique sur "bouttons 1" ou "boutton 2"

comment est-il possible de changer l'affichage de 1 en fonction des actions effectuée (sans detruire les objets a chaque fois) ? et ainsi de passer de l'un à l'autre ?


"mais les braves gens n'aiment pas que
  l'on suive une autre route qu'eux"

Hors ligne

#2 Le 10/08/2006, à 13:21

whiskykoka

Re : wxwidgets c++ mise en page

parce que mettons que j'utilise ceci :

Show (sizer_1, bool show = false, bool recursive = false) ;

pourquoi le compilateur me renvoie-t-il :

main.h: In member function «void cadre::traduction(wxCommandEvent&)»:
main.h:69: erreur: expected primary-expression before «bool»
main.h:69: erreur: expected primary-expression before «bool»

?
quelle est la faute ou est-ce que j'utilise bien ce qu'il faut ?


"mais les braves gens n'aiment pas que
  l'on suive une autre route qu'eux"

Hors ligne

#3 Le 10/08/2006, à 13:32

ponsfrilus

Re : wxwidgets c++ mise en page

Hors ligne

#4 Le 10/08/2006, à 14:17

trucutu

Re : wxwidgets c++ mise en page

Qu'est-ce que tu appelles changer l'affichage ?


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#5 Le 10/08/2006, à 14:27

bipede

Re : wxwidgets c++ mise en page

Les sizers wxWidgets ne contiennent rien. Ils placent des objets sur un conteneur, et ne possèdent donc pas de méthodes de visibilité.
Pour utiliser les méthodes de visibilité, tu crées un panel par objet ou groupe d'objets que tu veux faire apparaître dans ta zone 1, et ce sont ces panels que tu rends visibles ou invisibles selon le bouton cliqué.

Dernière modification par bipede (Le 10/08/2006, à 14:29)


Desktop: MSI - Intel® Core™ i5-3330 CPU @ 3.00GHz × 4 - RAM 8 go- Kubuntu 21.04 - Système sur SSD 64 Go - /home sur HDD 500 Go.
Laptop: DELL Inspiron-15 3567 - Intel® Core™ i5-7200 CPU @ 2.50GHz × 4 - RAM 8 go - HDD 1 To - Ubuntu 20.10 avec /home séparé.

Mon site: Les contributions du bipède

Hors ligne

#6 Le 10/08/2006, à 14:36

whiskykoka

Re : wxwidgets c++ mise en page

ca veut dire que je crée un objet (par exemple wxTextCtrl) que je place sur un panel, panel que je place alors dans un wxBoxSizer ?

bon, j'essaye en tout cas. vive le forum !


"mais les braves gens n'aiment pas que
  l'on suive une autre route qu'eux"

Hors ligne

#7 Le 10/08/2006, à 14:47

trucutu

Re : wxwidgets c++ mise en page

Bon, j'imagine que tu as crée une table des évênement, que tu as inséré tout ce que tu viens de dire dans ta fonction traduction()...
Donc, perso, je tenterais de raffraichir l'ensemble de la fenêtre par un :
this->Show(); (un truc dans le genre)
et sizer_2 sera au pire simplement redimensionné pour que tout s'affiche dans la fenêtre


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#8 Le 10/08/2006, à 15:53

aleph

Re : wxwidgets c++ mise en page

whiskykoka a écrit :

ca veut dire que je crée un objet (par exemple wxTextCtrl) que je place sur un panel, panel que je place alors dans un wxBoxSizer ?

bon, j'essaye en tout cas. vive le forum !

Pas tout à fait. Je t'invite à jeter une oeil sur LearnSizers3.zip à http://www.chez.com/spinecho/

C'est un script Python qui utilise wxPython. Il propose une trentaine de panels avec différents layouts utilisant des sizers. L'application montre la création et l'utilisation de sizers en partant d'un layout simple (un seul sizer) puis propose des exemples avec une complexité croissante. Ton cas, assez classique, est un des exemples proposés.

Si tu ne connais pas wxPython, sache que la création et sa logique des sizers est exactement la même que wxWidgets.

#9 Le 10/08/2006, à 21:17

whiskykoka

Re : wxwidgets c++ mise en page

eh bien j'ai ramé toute la journée et alors je comprends pas. j'ai essayé (et j'essaye encore) avec wxPanel mais alors je ne sais pas comment m'en servir. les tutoriaux sont super rare ou je ne cherche pas au bon endroit ?

meme la doc officielle est, je trouve, tres légère. je trouve que les methodes sont balancées avec le minimum d'explication :
http://wiki.wxwidgets.org

tu crées un panel par objet

kesako ? ca reviens a faire quoi ?

wxTextCtrl * texte = new wxTextCtrl (this, TextEdit, wxT(""), wxDefaultPosition, wxDefaultSize, wxHSCROLL  | wxTE_MULTILINE );
zone_texte = new wxPanel (this, -1, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL, wxT("panel_texte")) ;

comment faire pour associer les deux ?

en tout cas merci ! si vous avez des bouquins a conseillé ou autre tutoriaux...

Dernière modification par whiskykoka (Le 10/08/2006, à 21:19)


"mais les braves gens n'aiment pas que
  l'on suive une autre route qu'eux"

Hors ligne

#10 Le 10/08/2006, à 21:53

trucutu

Re : wxwidgets c++ mise en page

euh... (Si je ne me trompes pas...)
Si tu veux affecter un objet à un autre, tu ne dois pas faire systématiquement "new xxx(this..." . Parce que dans ce cas, tu affectes tout à ta fenêtre.

Tu devrais plutôt faire :
zone_texte = new wxPanel (this, -1, ...
wxTextCtrl * texte = new wxTextCtrl (zone_texte, TextEdit...

Ensuite, si tu veux modifier les objets de ta fenêtre (genre ton wxTextCtrl), il faudrait que tu les déclare en tant qu'attributs de ta class fenêtre. Comme ça tu peux y avoir accès dans tes méthodes "évènementielles"...

En ce qui concerne la doc, j'avais trouvé (en avril) le livre de Julian Smart :Cross-Platform GUI Programming with wxWidgets (le créateur de cette librarie) en Pdf sur le site officiel. Et apparemment, il n'est plus téléchargeable.... En tous cas, c'est une référence

Edit:
Euh... en fait, tu peux le trouver à cette adresse :
www.phptr.com/content/images/0131473816 … 6_book.pdf

Dernière modification par trucutu (Le 10/08/2006, à 22:07)


La chanson du dimanche - "La pêche !"
PC acheté chez Novatux : entièrement satisfait.
Faire des recherches solidaires !

Hors ligne

#11 Le 11/08/2006, à 08:31

aleph

Re : wxwidgets c++ mise en page

> whiskykoka

eh bien j'ai ramé toute la journée et alors je comprends pas. j'ai essayé (et j'essaye encore) avec wxPanel mais alors je ne sais pas comment m'en servir. les tutoriaux sont super rare ou je ne cherche pas au bon endroit ?

---

Exactement, les seuls applications d'apprentissage disponibles à ma connaissance dans le monde wxWidgets/wxPython, sont la démo de wxPython et l'application LearnSizers3.zip.

Honnêtement, as-tu jeté un oeil à ma référence ?

Autrement un aperçu synthétique est ici http://wiki.wxpython.org/index.cgi/UsingSizers?highlight=%28sizer%29

Cela vaut bien mieux que les quelques trop courts conseils que je pourrais te donner ici.

#12 Le 11/08/2006, à 11:51

whiskykoka

Re : wxwidgets c++ mise en page

oui j'ai jeté un oeil, c'est sympa effectivement. super aussi pour le bouquin de trucutu où on trouve plein d'explication.

Je me decourage pas !


"mais les braves gens n'aiment pas que
  l'on suive une autre route qu'eux"

Hors ligne

#13 Le 11/08/2006, à 13:11

aleph

Re : wxwidgets c++ mise en page

whiskykoka a écrit :

oui j'ai jeté un oeil, c'est sympa effectivement. super aussi pour le bouquin de trucutu où on trouve plein d'explication.

Je me decourage pas !

Super, maintenant que tu as le code sous les yeux, c'est plus simple. La logique sous wxWidgets/wxPython est la même. En quelques mots:

1) Définir l'application / main loop

2) dans 1) définir un wx.Frame qui sera le toplevel frame

3) dans 2) définir un wx.Panel (il n'y a qu'un seul panel dans un frame)

4) dans 3), définir les contrôles que tu vas utiliser sans spécifier leurs tailles et leurs positions.

5) toujours dans 3) définir le ou les sizer(s) selon convenance, imbrication etc. Placer les contrôles dans les sizers.

6) toujours dans 3) SetSizer ou SetSizerAndFit qui agencera le "layout" des contrôles.

Un redimensionnement du frame impliquera automatiquement une redimensionnement des contrôles.
C'est ce que montre l'application LearnSizers. Dans cette application, les points 1) et 2) ne sont définis qu'une fois. Par contre, il y a plusieurs Panels (points 3) et suite) avec leurs contenus disponibles.

Bonne chance.

#14 Le 11/08/2006, à 13:29

whiskykoka

Re : wxwidgets c++ mise en page

youpi ! ca se precise. bon je pars en vacances demain, alors cela n'aboutira sans doute qu'au retour.


"mais les braves gens n'aiment pas que
  l'on suive une autre route qu'eux"

Hors ligne