Domanda

Questa è la gerarchia dei widget che ho:

Frame > wxBoxSizer > wxPanel > wxBoxSizer > wxFlexGridSizer (2 colonne, 9 righe), con campi modulo e pulsanti assortiti all'interno.

Il primo BoxSizer è quello di posizionare il pannello e il secondo è di creare un bordo attorno al FlexGrid.

Tutto sembra bello e la cornice può espandersi correttamente se la finestra viene ingrandita, ma può anche essere ridimensionata a quasi nulla, nascondendo tutti gli elementi del modulo.

Come imposto la dimensione minima della finestra a quella suggerita da FlexGridSizer per impostazione predefinita (tutti gli elementi del modulo sono visibili e hanno le loro dimensioni minime possibili)?

È stato utile?

Soluzione

L'uso del metodo SetMinSize () sulla cornice per impostare una dimensione minima imposterà un limite sull'area più piccola della cornice (appena testata). Una volta impostato, wxWidgets non consentirà di ridimensionare il frame più piccolo del valore specificato.

Impostarei il valore in questo modo. Nel costruttore, imposta tutti gli elementi della cornice. Alla fine, dopo aver chiamato il metodo Layout () per impostare tutti i sizer e simili, chiama il metodo GetSize (int * w, int * h) per ottenere il le dimensioni xey della cornice nel layout predefinito. Usa questi valori per chiamare il metodo SetMinSize () per impostare quella dimensione predefinita come minima per il tuo Frame. Ciò terrà conto di tutte le varie imbottiture e bordi e tali impostati dal telaio e dagli elementi contenuti.

Altri suggerimenti

Probabilmente troppo tardi, ma le risposte fornite qui sono inutilmente complicate, devi solo chiamare SetSizerAndFit (sizer) per associare entrambi il sizer al frame, impostare la sua dimensione iniziale e anche impostare questa dimensione come dimensione minima accettabile.

In wxPerl, la risposta di dagorym può essere scritta in modo conciso come $ self- > SetMinSize ($ self- > GetSize ()); dopo una chiamata a Layout () .

Proverei a chiamare wxFrame- > SetMinSize (wxSize) con qualunque cosa wxFlexGridSizer- > GetMinSize () restituisce, dovrebbe funzionare, ma non testato . Dovrai notare cosa dice GetMinSize riguardo al passaggio alle dimensioni della finestra prima di passarlo, mi aspetto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top