2009-03-04 19 views
8

Jest hierarchia widżety Mam:Jak ustawić minimalny rozmiar okna w wxWidgets?

Ramka> wxBoxSizer> wxPanel> wxBoxSizer> wxFlexGridSizer (2 kolumny, 9 rzędów), z różnorodnych pól formularza i przyciski wewnątrz.

Pierwszy BoxSizer jest przeznaczony do umieszczenia panelu, a drugi do utworzenia obramowania wokół FlexGrid.

Wszystko wygląda ładnie, a ramka może się odpowiednio powiększyć, jeśli okno jest powiększone, ale można również zmienić rozmiar prawie do zera, ukrywając wszystkie elementy formy.

Jak wymusić minimalny rozmiar okna domyślnie sugerowany przez FlexGridSizer (wszystkie widoczne elementy formularza mają minimalne możliwe rozmiary)?

Odpowiedz

6

Użycie metody SetMinSize() w ramce do ustawienia minimalnego rozmiaru spowoduje ustawienie limitu na najmniejszej powierzchni ramki (wystarczy przetestować ją). Po ustawieniu wxWidget nie pozwoli na rozmiar ramki mniejszy niż podana wartość.

Ustawiłbym taką wartość. W konstruktorze ustaw wszystkie elementy ramki. Na koniec, po wywołaniu metody Layout(), aby skonfigurować wszystkie rozmiary i takie, należy wywołać metodę GetSize(int *w, int *h), aby uzyskać X i Y rozmiaru ramki w domyślnym układzie. Użyj tych wartości, aby wywołać metodę SetMinSize(), aby ustawić domyślny rozmiar jako minimalny dla ramki. Uwzględni to wszystkie różne wypełnienia i granice, a także takie, które zostaną ustawione przez ramkę i zawarte elementy.

2

W odpowiedzi na wxPerl, dagorym można napisać zwięźle jako $self->SetMinSize($self->GetSize()); po połączeniu z numerem Layout().

12

Prawdopodobnie o wiele za późno, ale podane tutaj odpowiedzi są niepotrzebnie skomplikowane, wystarczy połączyć się z SetSizerAndFit(sizer), aby skojarzyć sizer z ramką, ustawić jej początkowy rozmiar, a także ustawić ten rozmiar jako minimalny akceptowalny rozmiar.

+1

Nie jest za późno na odpowiedź! – dolmen

Powiązane problemy