wxFormBuilder怎麼製作繼承於wxWindow的窗口,便於集成在frame中

以前都是拿合作者製作好的UI框架,偶爾這次需要親自操刀。事情是這樣:用wxWidgets做一個窗口框架,左邊是個可浮動的樹列表窗口,右邊需要一個自定義的窗口,作爲框架的客戶繪製區域。用wxFormBuilder,拖出一個frame,然後裏面拖一個樹形列表窗,這兩步很簡單,而且正如自己想要。結果最後的客戶繪製窗口卻找不到適合的控件來拖動。差點想直接用代碼得了,無意中想起wxFormBuilder的自定義控件部分。試了一下果然是可以的。相關的步驟記錄在下面,供有緣人蔘考。


1、選中製作好的窗口框架,點擊標籤“Addtional”下的CustomControl。這是在UI製作區域的窗口框架左邊會出現一個窗口,這就是我們的自定義窗口。

我的目標是讓此窗口作爲框架的客戶端部分供繪製。希望它跟frame的客戶區域貼合,隱藏自身的標題欄、關閉框。因此,


2、右邊屬性中,拉到AUI部分,屬性docking改成“Center”;

3、docking屬性上面的RightDockable、LeftDockable、TopDockable、BottomDockable、floatable、dock fixed全部勾都去除;

4、往上的dock屬性選dock(不要用float);

5、再往上找到close_button,去除勾;

6、caption_visible去除勾;


以上幾步做完,我們可以看到這個新建的窗口占據了框架的客戶區域部分,就是我們需要的結果。需要注意的是,上面的步驟,倒着來不會產生同樣的結果(至少在wxFormBuilder中不會是同樣的結果。如果製作後發現窗口是懸浮的,那麼就是其中的關鍵幾步2、3、4跟5、6順序反了,這個是用wxFormBuilder需要知道的。


剩下的事情,我們需要填好屬性欄最上面的“CustumControl”中的內容,各個一定需要填的的內容說明如下:


1、name:在代碼生成時,窗口變量對應的名字

2、declaration:在代碼生成時,窗口變量對應的聲明

3、construction:在代碼生成時,窗口被create的代碼

4、#include:在代碼生成時,頭文件包含的聲明


上面的2、3、4,wxFormBuilder完全就拷貝你寫的部分帶生成的代碼裏面,所以是我們寫什麼,代碼裏就是什麼。


全文完。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章