FLTK学习笔记1-绘制基本控件(按钮、文本输入、容器)
控件种类
·
FLTK中的坐标
在FLTK中坐标均为正整数,其单位是像素(pixel),原点(x=0, y=0)在屏幕的左上角,如下图所示:
FLTK常用控件
在FLTK中,常用控件有按钮控件、文本控件以及容器控件等。同时,所有控件的创建方法都一样:
Fl_SomeWidget* pW = new SomeWidget(x, y, w, h, label);
这里Fl_SomeWidget是控件的名称,x, y, w, h分别对应控件的x坐标,y坐标,宽度和高度,label对应控件的显示名称。
按钮控件
按钮(Button)是最常用的控件之一,通过按钮用户可以调用对应的回调函数,从而控制程序的行为。
FLTK提供了以下几种常用按钮:
- Fl_Button
这种是最普通也是最常用的按钮。 - Fl_Check_Button
复选框控件,一组中可以有多个被选中。 - Fl_Return_Button
这种按钮可以用回车键激活(即使焦点不在这个按钮上)。 - Fl_Radio_Round_Button
(单)选框,与复选框不同的地方在于可以让一组中仅有一个单选框被激活。
文本控件
文本控件也是常用控件之一,它可以用来进行文字编辑以及输入输出。对于Fl_Text_Display和Fl_Text_Editor对象而言,需要绑定一个Fl_Text_Buffer对象作为要显示(编辑)的文字内容。
FLTK提供了以下几种用于处理文本的控件:
- Fl_Input
单行文本输入控件。 - Fl_Output
单行文本输出控件(只能复制,不能修改)。 - Fl_Multiline_Input
多行文本输入控件。 - Fl_Multiline_Output
多行文本输出控件。 - Fl_Text_Display
多行文本显示控件。 - Fl_Text_Editor
多行文本编辑控件。
容器控件
FLTK提供了以下几种容器控件:
- Fl_Double_Window
一个普通的双缓冲窗口。 - Fl_Group
一个基本的容器类,可以将其它控件进行编组。 - Fl_Window
一个普通的窗口。
因为在FLTK中,每一个被新加入的控件都默认被分到最近的一个分组(Group)中,因此在摆放完一个分组的所有控件后要调用end()
方法使后面添加的控件隶属于其父分组。
绘制基本控件
在FLTK中绘制基本控件并显示需要以下几个步骤:
- 创建一个窗口
- (可选)创建分组
- 创建控件
- 窗口调用
end()
方法 - 显示窗口
- 运行FLTK主循环
示例程序:
#include <FL/Fl.H>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Return_Button.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/Fl_Radio_Round_Button.H>
int main(){
Fl_Double_Window window(450, 350, "Simple Table"); /* 1. 创建一个窗口 */
Fl_Group* pGroup = new Fl_Group(50, 50, 400, 150); /* 2. 创建一个分组 */
Fl_Button* pButton = new Fl_Button(70, 50, 150, 30, "Fl_Button"); /* 3. 创建控件 */
Fl_Check_Button* pChkButton = new Fl_Check_Button(230, 50, 150, 30, "Fl_Check_Button");
Fl_Return_Button* pRetButton = new Fl_Return_Button(70, 100, 150, 30, "Fl_Return_Button");
Fl_Radio_Round_Button* pRndButton = new Fl_Radio_Round_Button(230, 100, 150, 30, "Fl_Round_Button");
pGroup->end(); /* 4. 结束上个容器的创建 */
Fl_Text_Editor* pText = new Fl_Text_Editor(50, 150, 350, 150);
Fl_Text_Buffer* pBuff = new Fl_Text_Buffer();
pText->buffer(pBuff); /* pBuff->text()中的内容就是Fl_Text_Buffer中显示的内容 */
pBuff->text("示例文字");
pText->end();
window.end(); /* 4. 结束上个容器的创建 */
window.show(); /* 5. 显示窗口 */
return Fl::run(); /* 6. 运行FLTK主循环 */
}
这里注意在编译的时候记得加上-lfltk命令(在MSYS2上还要加上-mwindows -DWIN32 -lole32 -luuid -lcomctl32)。
运行结果:
相关链接:
完整程序
专栏:FLTK
FLTK学习笔记2-回调函数
更多推荐
已为社区贡献1条内容
所有评论(0)