fluid
中已经有它自己自带的控件,那如何让我们自定义的控件放到
fluid
中呢,这里有两种方法,一种是修改
fluid
代码,一种是以另外的控件来代替自定义的控件,只是在代替控件属性的
class
选项下填写自定义控件的类名,这种方式优点是添加方便,缺点是不能所得即所见。另一种方式就是修改
fluid
的代码,让自定义控件像
fltk
自带的控件一样使用,下面就介绍如何通过修改
fluid
代码,添加自定义的控件。
以下以
Fl_Lcdnumber
控件为例。
第一步:首先需要在
fltk
的库中添加该控件
将
Fl_Lcdnumber.H
保存在
FL
目录下
将
Fl_Lcdnumber.cxx
保存在
src
目录下
修改
src->Makefile
文件,将
Fl_Lcdnumber.cxx
添加到
makefile
文件中,在
src
目录下运行
make,
重新编译
fltk
库。
第二步:在
function_panel.fl
增加一个按钮,修改相关属性,与其他控件的属性一样,不同的是在属性面板的
C++
下
user_data
框中的写上“
Fl_Lcdnumber
”
这一步的目的是在控件面板中增加该控件的选项,点击这个控件的按钮后在窗口中就会出现这个控件。
第三步:将控件添加到
fluid
的
new
菜单
在
factory.cxx
中定义
class Fl_Lcdnumber_type
,内容如下:
#include<FL/Fl_Lcdnumber.H>
class Fl_Lcdnumber_Type:public Fl_Widget_Type {
public:
virtual const char *type_name(){return "Fl_Lcdnumber";}
Fl_Widget *widget(int x, int y,int w,int h){
return new Fl_Lcdnumber(x,y,w,h);}
Fl_Widget_Type *_make(){return new Fl_Lcdnumber_Type();}
int pixmapID(){return 15;}
};
static Fl_Lcdnumber_Type Fl_Lcdnumber_type;
在
factory.cxx
的
New Menu[]
中添加以下两行
{"coustom widget",0,0,0,FL_SUBMENU},
{0,0,cb,(void*)&Fl_Lcdnumber_type},
第四步:重新编译
fluid
在
fluid
目录下运行
make,
编译
fluid
,重新打开
fluid
后就可以看到在控件面板中和
new
菜单中有
Fl_Lcdnumber
控件了,使用方法与其他控件一样。