Question

Voici la hiérarchie des widgets que j'ai:

Cadre > wxBoxSizer > wxPanel > wxBoxSizer > wxFlexGridSizer (2 colonnes, 9 lignes), avec des champs de formulaire assortis et des boutons à l'intérieur.

La première BoxSizer doit placer le panneau dans, et la seconde est de créer une bordure autour du FlexGrid.

Tout est beau, et le cadre peut être agrandi correctement si la fenêtre est agrandie, mais il peut également être redimensionné à presque rien, masquant tous les éléments de formulaire.

Comment forcer la taille minimale de la fenêtre à celle suggérée par FlexGridSizer par défaut (tous les éléments de formulaire sont visibles et ont leur taille minimale possible)?

Était-ce utile?

La solution

L'utilisation de la méthode SetMinSize () sur votre cadre pour définir une taille minimale permet de définir une limite pour la plus petite zone du cadre (elle vient d'être testée). Une fois défini, wxWidgets ne permettra pas que la taille de l’image soit inférieure à la valeur spécifiée.

Je définirais la valeur comme ceci. Dans le constructeur, configurez tous les éléments du cadre. À la fin, après avoir appelé la méthode Layout () pour configurer tous les calibreurs, appelez la méthode GetSize (int * w, int * h) pour obtenir le x et y taille de votre cadre à la mise en page par défaut. Utilisez ces valeurs pour appeler la méthode SetMinSize () afin de définir cette taille par défaut comme taille minimale pour votre Frame. Ceci tiendra compte de tous les différents marges et bordures et de celles configurées par le cadre et les éléments contenus.

Autres conseils

Probablement beaucoup trop tard, mais les réponses données ici sont inutilement compliquées, il vous suffit d'appeler SetSizerAndFit (sizer) pour associer le dimenseur au cadre, définir sa taille initiale ainsi que cette taille. taille acceptable minimale.

Dans wxPerl, la réponse de dagorym peut être écrite de manière concise, en tant que $ self- > SetMinSize ($ self- > GetSize ()); après un appel à Layout () .

J'essaierais d'appeler wxFrame- > SetMinSize (wxSize) avec quels que soient les wxFlexGridSizer- > GetMinSize () retournent, devraient fonctionner, mais pas testés . Vous devrez noter ce que GetMinSize dit à propos de la conversion de la taille de la fenêtre avant de la transmettre, je l’attends.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top