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 : 7

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Dimensionnement automatique de la fenêtre?
Conversation : Dimensionnement automatique de la fenêtre?
08-11-2007 19:30:21  Dimensionnement automatique de la fenêtre? #1
Arkhiall (Membre)
Inscrit le : 08-11-2007
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne
Salut à tous,
Je débute avec wxWidgets et j'en rencontré un problème de dimensionnement de ma fenêtre.
Elle contient de nombreux sizers, widgets, etc et lorsqu'elle elle s'ouvre après compilation, sa taille n'est pas adaptée à ce qu'elle contient. Elle est toute petite alors qu'elle contient une vingtaine de lignes de texte avec des champs de texte en face, donc forcément c'est illisible...

D'où ma question : existe-t-il un moyen de la faire se redimensionner automatiquement en fonction de ce qu'elle contient?

J'ai bien essayé Fit(), mais il ne fait que me réduire la fenêtre au minimum... Comme si elle était vide.

Merci à ceux qui sauront me répondre ;)
08-11-2007 19:35:22  Re: Dimensionnement automatique de la fenêtre? #2
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Tu as defini la taille des wxTextCtrl? A mon avis ca viens de la, faut le faire

Itérer est humain, récurser est divin
08-11-2007 19:50:45  Re: Dimensionnement automatique de la fenêtre? #3
Arkhiall (Membre)
Inscrit le : 08-11-2007
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne
Merci pour ta réponse rapide,
en effet, la taille n'était pas définie. Je viens de le faire et de virer les wxEXPAND que j'avais collés partout lorsque j'ajoutais mes widgets aux sizers. Maintenant, mes wxStaticBoxSizer sont fixes (ce que je désire), mais la taille de la fenêtre ne l'est toujours pas, et par défaut, elle reste trop petite.

J'ai donc appelé des Fit() un peu partout (ma Frame principale, mon notebook, chaque panel de mon notebook...) mais comme avant, ils ne font que réduire la fenêtre.

Une autre idée?

Merci en tous cas, on progresse ^^
08-11-2007 19:59:24  Re: Dimensionnement automatique de la fenêtre? #4
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Montre ton code stp
----------
Tiens regarde ca, c'est pas bien fai mais bon http:/svn.gna.org/viewcvs/ate/trunk/src … iew=markup

Dernière modification par xxltux (08-11-2007 20:02:20)


Itérer est humain, récurser est divin
08-11-2007 20:38:37  Re: Dimensionnement automatique de la fenêtre? #5
Arkhiall (Membre)
Inscrit le : 08-11-2007
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne
La page de notebook qui nous intéresse :

Code wxWidgets:

 
#include "ArkhSim.h"
 
 
ArkhSim::ArkhSim(wxNotebook* parent) : wxPanel(parent, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxEXPAND)
{
    wxBoxSizer *mainSizer = new wxBoxSizer(wxHORIZONTAL);
    wxBoxSizer *leftColumn = new wxBoxSizer(wxVERTICAL);
    wxBoxSizer *rightColumn = new wxBoxSizer(wxVERTICAL);
 
    wxStaticBoxSizer *fleet = new wxStaticBoxSizer(wxVERTICAL, this, _("Flottes"));
    wxStaticBoxSizer *defense = new wxStaticBoxSizer(wxVERTICAL, this, _("Défenses"));
    wxStaticBoxSizer *target = new wxStaticBoxSizer(wxVERTICAL, this, _("Cible"));
 
    SimElement *SC = new SimElement(this, -1, _("Petit Transporteur"), FLEET);
    SimElement *LC = new SimElement(this, -1, _("Grand Transporteur"), FLEET);
    SimElement *LF = new SimElement(this, -1, _("Chasseur Léger"), FLEET);
    SimElement *HF = new SimElement(this, -1, _("Chasseur Lourd"), FLEET);
    SimElement *CR = new SimElement(this, -1, _("Croiseur"), FLEET);
    SimElement *BS = new SimElement(this, -1, _("Vaisseau de Bataille"), FLEET);
    SimElement *CS = new SimElement(this, -1, _("Vaisseau de Colonisation"), FLEET);
    SimElement *RC = new SimElement(this, -1, _("Recycleur"), FLEET);
    SimElement *EP = new SimElement(this, -1, _("Sonde Espionnage"), FLEET);
    SimElement *BB = new SimElement(this, -1, _("Bombardier"), FLEET);
    SimElement *SS = new SimElement(this, -1, _("Satellite Solaire"), SAT);
    SimElement *DE = new SimElement(this, -1, _("Destructeur"), FLEET);
    SimElement *DS = new SimElement(this, -1, _("Etoile de la Mort"), FLEET);
    SimElement *BC = new SimElement(this, -1, _("Traqueur"), FLEET);
 
    SimElement *RL = new SimElement(this, -1, _("Lanceur de missiles"), DEFENSE);
    SimElement *LL = new SimElement(this, -1, _("Artillerie laser légère"), DEFENSE);
    SimElement *HL = new SimElement(this, -1, _("Artillerie laser lourde"), DEFENSE);
    SimElement *GC = new SimElement(this, -1, _("Canon de Gauss"), DEFENSE);
    SimElement *IC = new SimElement(this, -1, _("Artillerie à ions"), DEFENSE);
    SimElement *PT = new SimElement(this, -1, _("Lanceur de plasma"), DEFENSE);
    SimElement *SD = new SimElement(this, -1, _("Petit bouclier"), DEFENSE);
    SimElement *LD = new SimElement(this, -1, _("Grand bouclier"), DEFENSE);
    SimElement *MI = new SimElement(this, -1, _("Missiles"), MISSILE);
 
    fleet->Add(SC, wxEXPAND); //Small Cargo
    fleet->Add(LC, wxEXPAND); //Large Cargo
    fleet->Add(LF, wxEXPAND); //Light Fighter
    fleet->Add(HF, wxEXPAND); //Heavy Fighter
    fleet->Add(CR, wxEXPAND); //Cruiser
    fleet->Add(BS, wxEXPAND); //Battle Ship
    fleet->Add(CS, wxEXPAND); //Colony Ship
    fleet->Add(RC, wxEXPAND); //Recycler
    fleet->Add(EP, wxEXPAND); //Espionage Probe
    fleet->Add(BB, wxEXPAND); //Bomber
    fleet->Add(SS, wxEXPAND); //Solar Satellite
    fleet->Add(DE, wxEXPAND); //Destructor
    fleet->Add(DS, wxEXPAND); //Death Star
    fleet->Add(BC, wxEXPAND); //Battle Cruiser
 
    defense->Add(RL, wxEXPAND); //Rocket Launcher
    defense->Add(LL, wxEXPAND); //Light Laser
    defense->Add(HL, wxEXPAND); //Heavy Laser
    defense->Add(GC, wxEXPAND); //Gauss Canon
    defense->Add(IC, wxEXPAND); //Ion Canon
    defense->Add(PT, wxEXPAND); //Plasma Turret
    defense->Add(SD, wxEXPAND); //Small Dome
    defense->Add(LD, wxEXPAND); //Large Dome
    defense->Add(MI, wxEXPAND); //Missiles
 
    leftColumn->Add(fleet);
    leftColumn->Add(defense);
 
    rightColumn->Add(target);
    mainSizer->Add(leftColumn);
    mainSizer->Add(rightColumn);
 
    this->SetSizer(mainSizer);
}
 
ArkhSim::~ArkhSim()
{
    //dtor
}
 
SimElement::SimElement(wxWindow *parent, wxWindowID id, wxString name, unsigned int type) : wxBoxSizer(wxHORIZONTAL)
{
    wxStaticText *label = new wxStaticText(parent, id, name, wxDefaultPosition, wxSize(150, 20));
    wxTextCtrl *nbAtt = new wxTextCtrl(parent, wxID_ANY, _(""), wxDefaultPosition, wxSize(50, 20));
    this->Add(label);
    this->Add(nbAtt);
}
 
 
 
08-11-2007 20:43:30  Re: Dimensionnement automatique de la fenêtre? #6
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
A tu me le fileras, je me sui refai un compte lol

Itérer est humain, récurser est divin
08-11-2007 20:44:31  Re: Dimensionnement automatique de la fenêtre? #7
Arkhiall (Membre)
Inscrit le : 08-11-2007
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne
lol, et sinon pour mon problème? ^^
08-11-2007 20:45:41  Re: Dimensionnement automatique de la fenêtre? #8
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
SimElement c'est quoi con constructeur?

Montre le constructeur tant qu'on y est lol
Tu as vu mon code?
Moi me sui fai un compte en 52

Dernière modification par xxltux (08-11-2007 20:48:53)


Itérer est humain, récurser est divin
08-11-2007 20:48:34  Re: Dimensionnement automatique de la fenêtre? #9
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut, et bienvenue.

Pour ton problème, il faut demander au sizer principal de la fenêtre d'en recalculer automatiquement la taille.

Code wxWidgets:

// Dans le constructeur de la fenêtre :
SizerPrincipal->SetSizeHints(this);


C'est bien entendu à adapter à ton code.

@+
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....
08-11-2007 20:50:02  Re: Dimensionnement automatique de la fenêtre? #10
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Heu mon code au fait il a donc un probleme?

Itérer est humain, récurser est divin
08-11-2007 21:01:31  Re: Dimensionnement automatique de la fenêtre? #11
Arkhiall (Membre)
Inscrit le : 08-11-2007
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne
Quel boulet...
Ma fenêtre principale n'avait pas de sizer, juste le notebook sans rien. Alors forcément...
Mais SetSizeHints est utile quand même pour redimensionner la fenêtre ;)

Merci à vous!
08-11-2007 21:06:57  Re: Dimensionnement automatique de la fenêtre? #12
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Tu fais aussi les simulations des ressources?

Itérer est humain, récurser est divin
08-11-2007 21:08:51  Re: Dimensionnement automatique de la fenêtre? #13
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
En fait, quand la fenêtre ne contient qu'un seul contrôle (hormis la statusbar), tu n'es pas obligé de lui affecter un sizer : le contrôle est automatiquement redimensionné pour occuper toute la zone cliente.
Mais dans ton cas, il est quand même utile pour le redimensionnement automatique.
Si ça se trouve, il y en a un par défaut : il faut juste trouver le moyen de le récupérer (à étudier...)

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....
08-11-2007 21:20:44  Re: Dimensionnement automatique de la fenêtre? #14
Arkhiall (Membre)
Inscrit le : 08-11-2007
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne
J'ai pas l'impression : à chaque fois que j'oubliais d'assigner un élément à un sizer, il était mis dans le coin en haut à gauche...

Enfin bon, autant faire un sizer soi-même et pas se compliquer je pense, mais c'est intéressant.

@xxltux : oui quand j'aurai fait l'interface, le simulateur, l'importateur de RC/RE, le metteur en forme, etc ^^

Arkhiall, uni 24, 1230k points :p
08-11-2007 21:25:08  Re: Dimensionnement automatique de la fenêtre? #15
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Un coup de main? Dommage qu'on soit pas sur le meme univers
----------
Heu au fait les statistique sont maj quand?

Dernière modification par xxltux (08-11-2007 21:26:50)


Itérer est humain, récurser est divin
08-11-2007 21:31:06  Re: Dimensionnement automatique de la fenêtre? #16
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
xxltux:
Heu au fait les statistique sont maj quand?
Pour le nombre de membres inscrits, le fichier "cache" est mis à jour à chaque nouvelle inscription.
Pour les autres, c'est une table sql "en mémoire" : c'est donc en live (avec en temps de non-activité réglable pour les membres/invités en ligne).

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....
08-11-2007 21:31:52  Re: Dimensionnement automatique de la fenêtre? #17
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Désolé mais je parlai de celle de oGame lol

Itérer est humain, récurser est divin
08-11-2007 21:40:41  Re: Dimensionnement automatique de la fenêtre? #18
Arkhiall (Membre)
Inscrit le : 08-11-2007
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne
lol un peu HS alors ^^
Bah comme toujours les stats, chaque jour à 0h05, 8h05 et 16h05.
Pour le coup de main ca devrait aller le simulateur est déjà codé ;)
08-11-2007 21:41:28  Re: Dimensionnement automatique de la fenêtre? #19
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Alors montre stp

Itérer est humain, récurser est divin
08-11-2007 21:50:32  Re: Dimensionnement automatique de la fenêtre? #20
Arkhiall (Membre)
Inscrit le : 08-11-2007
Messages: 28
Snippets: 0
Tutoriels: 0
Hors ligne
Sur un forum c'est rac il doit y avoir une bonne douzaine de fichiers de 200 lignes en moyenne lol
08-11-2007 22:22:13  Re: Dimensionnement automatique de la fenêtre? #21
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Moi j'ai que 7 points snif
----------
Faudrai se faire une alliance wx sur un univers lol

Dernière modification par xxltux (09-11-2007 20:48:32)


Itérer est humain, récurser est divin
10-11-2007 12:55:35  Re: Dimensionnement automatique de la fenêtre? #22
blend (Membre)
Inscrit le : 07-10-2007
Messages: 129
Snippets: 0
Tutoriels: 0
Hors ligne
oeuf corse!

Rien ne vaut la 2D pour éviter les problèmes de profondeur.
10-11-2007 13:05:42  Re: Dimensionnement automatique de la fenêtre? #23
xxltux (Membre)
Lieu: Montpellier
Inscrit le : 07-10-2007
Messages: 544
Snippets: 0
Tutoriels: 0
Site web
Hors ligne
Tu devrais aller a la colombiere lol
----------
Alors on peux l'avoir le prog? Que je dise qu'un nouveau programme de simulation est sorti à mon alliance lol

Dernière modification par xxltux (01-12-2007 11:48:44)


Itérer est humain, récurser est divin
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» Dimensionnement automatique de la fenêtre?