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完全就拷贝你写的部分带生成的代码里面,所以是我们写什么,代码里就是什么。


全文完。


你可能感兴趣的:(C++,UI)