第三章常用的控件和属性

这章将描述FLTK提供的控件,并介绍如何得到和设置控件的标准属性。

按钮

FLTK提供了很多类型的按钮

Fl_Button 普通按钮

Fl_Check_Button 带有选择框的按钮

Fl_Light_Button 带有指示灯的按钮

Fl_Repeat_Button

Fl_Return_Button 能被Enter激活的按钮

Fl_Round_Button 带有圆形选择框的按钮

3-1 FLTK 按钮控件

每一个按钮都需要相应的<FL/Fl_xyz_Button.H>头文件。构造函数包含了控件的位置,大小和可选的标签

Fl_Button *button = new Fl_Button(x, y, width, height, "label");
Fl_Light_Button *lbutton = new Fl_Light_Button(x, y, width, height);
Fl_Round_Button *rbutton = new Fl_Round_Button(x, y, width, height, "label");

每一个按钮可以设置自己的类型用type(),通过这个设置,可以让一个按钮为push button, toggle button, or radio button:

button->type(FL_NORMAL_BUTTON);
lbutton->type(FL_TOGGLE_BUTTON);
rbutton->type(FL_RADIO_BUTTON);

对于toggle和radio按钮,value()函数返回当前的状态,开/关(0代表关,1代表开),set()和clear()分别用来设置和清除togglebutton的状态。Radio Button可以用setonly()打开,同组中的其他Radio button按钮将关闭。

文本

FLTK提供了几种文本控件来显示和接收文本信息

Fl_Input 输入单行的文本

Fl_Output 输出单行的文本

Fl_Multiline_Input 多行文本输入框

Fl_Multiline_Output 多行文本输出框

Fl_Text_Display 显示多行文本控件

Fl_Text_Editor 多行文本编辑控件

Fl_Help_View 显示HTML文本控件

Fl_Output and Fl_Multiline_Output 控件允许互相copy,但是不能改变

Value()函数用来设置和得到显示的字符串

Fl_Input *input = new Fl_Input(x, y, width, height, "label");
input->value("Now is the time for all good men...");

这个字符串将被拷贝到该控件的存储空间内,当用value()设置后

Fl_Text_Display and Fl_Text_Editor 用Fl_Text_Buffer来设置他的值,而不是一个简单的字符串。

Valuators

Valuators用来显示数字轨迹信息

Fl_Counter 带有箭头按钮的控件显示当前值

Fl_Dial 圆形手柄

Fl_Roller

Fl_Scrollbar 滚动条控件

Fl_Slider 带有手柄的滑块

Fl_Value_Slider显示当前值的滑块


Figure 3-2: FLTK valuator widgets

value()函数得到和设置控件的当前值,minimum()和maximum()设置了控件的范围

群Groups

Fl_Group控件被用来做一般的容器控件。除了单选按钮群以外,还被用来形成windows,tabs,scrolled windows等控件。一下是FLTK提供的群类。

Fl_Double_Window 一个双缓冲的窗口

Fl_Gl_Window 一个OpenGL的窗口类

Fl_Group 容器类的基类。能被用来包含所有的控件

Fl_Pack 将控件收集到一个群区域中

Fl_Scroll 滚动窗口区域

Fl_Tabs

Fl_Tile

Fl_Window

设置控件的位置和大小

控件的位置和大小在你创建的时候就已经设置了,你可以通过x(),y(),w(),h(),来得到。

改变大小和位置用position(),resize(),size()函数。

button->position(x, y);
group->resize(x, y, width, height);
window->size(width, height);

颜色:

FLTK用一个32位的无符号整形存储颜色。它可能是256种颜色一个索引,也可能是一个24位的RGB颜色。调色板不是X或WIN32的colormap,它是有对应固定内容的调色板

以下是一些常用的颜色的符号定义

FL_BLACK

FL_RED

FL_GREEN

FL_YELLOW

FL_BLUE

FL_MAGENTA

FL_CYAN

FL_WHITE

这些符号是FLTK控件默认的颜色,详细情况请参考Enumerations

  • FL_FOREGROUND_COLOR
  • FL_BACKGROUND_COLOR
  • FL_INACTIVE_COLOR
  • FL_SELECTION_COLOR

RGB颜色可以用fl_rgb_color()函数设置。

Fl_Color c = fl_rgb_color(80,170,255);

控件的颜色用color()函数设置

button->color(FL_RED);

类似的,标签的颜色用labelcolor()函数设置

button->labelcolor(FL_WHITE);

Box类型

Fl_Boxtype的类型在<Enumeration.H>中定义,可以用Fl_Widget::box()设置和得到。图3-3显示了标准的box类型。


Figure 3-3: FLTK box types

FL_NO_BOX意思是任何东西都不要画,但仍然是留在窗口上。Fl_ 。。。_FRAME类型只是画边框,中间不做任何改变。如图中蓝色的部分。

制作你自己的Boxtypes

你可以自己制作个性风格的boxtype.通过一个小函数,并将其加到boxtypes的列表中

画图函数

画图函数传递的参数控件的是box的边界和背景颜色

void xyz_draw(int x, int y, int w, int h, Fl_Color c) {

...

}

如一个简单的画图函数填充一个矩形,给定颜色并画一个黑色的外框

void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
 fl_color(c);
 fl_rectf(x, y, w, h);
 fl_color(FL_BLACK);
 fl_rect(x, y, w, h);
}

加入自定义的box类型

Fl::set_boxtype函数添加或取代特定的box类型

#define XYZ_BOX FL_FREE_BOXTYPE
Fl::set_boxtype(XYZ_BOX, xyz_draw, 1, 1, 2, 2);

最后4个参数是偏移量,当画该 box时,x,y,w,h会减去相应的偏移量

标签和标签类型

回调函数

快捷键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值