我有一個靜態文本控件,它根據用戶操作更改其內容。它在與其他幾個控件的水平尺寸上。當文本發生變化時,控件會動態更新其大小,但不會動態調整它在sizer中的位置,也就是說,它與兄弟控件重疊,直到手動調整主窗口大小,然後再次看起來很好。wxLua - 在wxStaticText控件中更改文本時需要動態重排
如何使篩分器自動重新調整,使萬物適合?
我有一個靜態文本控件,它根據用戶操作更改其內容。它在與其他幾個控件的水平尺寸上。當文本發生變化時,控件會動態更新其大小,但不會動態調整它在sizer中的位置,也就是說,它與兄弟控件重疊,直到手動調整主窗口大小,然後再次看起來很好。wxLua - 在wxStaticText控件中更改文本時需要動態重排
如何使篩分器自動重新調整,使萬物適合?
最簡單的方法是在由wxGetTopLevelParent()
返回的頂級窗口父項上調用Layout()
。這不是最有效的方式,因爲它可能導致重新佈局過多,並且您始終可以將佈局限制爲包含更改尺寸需要更新的尺寸的窗口的最深尺寸或窗口,但是,再次執行此操作在TLW級別是最簡單的方法。
好的,Stackoverflow指出了我的一些其他問題,包含我的答案。我需要在sizer上調用Layout()。但事情並不那麼簡單。我爲GUI使用了xrc文件,並不知道如何獲取sizer的句柄。直到我知道我可以在控件上調用GetContainingSizer()。
但它並不那麼簡單。
作爲wxWidgets的新手,我嘗試了許多不同的方法來解決這個問題,我在它自己的sizer中使用了靜態文本控件,在sizer中使用了它的相鄰按鈕,並且所有sizer都在水平的box sizer中。
擺脫這些額外的大小和控制一個水平的所有兄弟姐妹。盒子sizer工作...幾乎!但事情並不那麼簡單。
兄弟姐妹控制流暢,但包含的大小不是居中在其區域,即控制偏離中心的權利。所以我不得不去下一個包含sizer。但是我不能在sizer上調用GetContainingSizer(),所以我必須得到sizer的同級控件,然後調用GetContainingSizer()。而且只要我在上做了 sizer的佈局,一切都奏效了!非常簡單,真的。
實際上並不那麼簡單。按鈕右側有另一個靜態文本控件。我希望那個也改變。但我很快意識到我不喜歡按鈕四處移動,所以我不得不修復它們,但讓文本控件圍繞它們調整大小。我認爲會有更多的sizer ... – Stomp
我想我可以通過調用包含sizer上的Layout()來做到這一點,但這似乎不起作用,並且文檔說sizer不會使用Layout()更改其尺寸。 – Stomp