FLTK学习笔记1-绘制基本控件(按钮、文本输入、容器)

FLTK中的坐标

在FLTK中坐标均为正整数,其单位是像素(pixel),原点(x=0, y=0)在屏幕的左上角,如下图所示:
FLTK_axis

FLTK常用控件

在FLTK中,常用控件有按钮控件、文本控件以及容器控件等。同时,所有控件的创建方法都一样:

Fl_SomeWidget* pW = new SomeWidget(x, y, w, h, label);

这里Fl_SomeWidget是控件的名称,x, y, w, h分别对应控件的x坐标,y坐标,宽度和高度,label对应控件的显示名称。

按钮控件

按钮(Button)是最常用的控件之一,通过按钮用户可以调用对应的回调函数,从而控制程序的行为。

FLTK提供了以下几种常用按钮:

  1. Fl_Button
    这种是最普通也是最常用的按钮。
  2. Fl_Check_Button
    复选框控件,一组中可以有多个被选中。
  3. Fl_Return_Button
    这种按钮可以用回车键激活(即使焦点不在这个按钮上)。
  4. Fl_Radio_Round_Button
    (单)选框,与复选框不同的地方在于可以让一组中仅有一个单选框被激活。
文本控件

文本控件也是常用控件之一,它可以用来进行文字编辑以及输入输出。对于Fl_Text_Display和Fl_Text_Editor对象而言,需要绑定一个Fl_Text_Buffer对象作为要显示(编辑)的文字内容。

FLTK提供了以下几种用于处理文本的控件:

容器控件

FLTK提供了以下几种容器控件:

因为在FLTK中,每一个被新加入的控件都默认被分到最近的一个分组(Group)中,因此在摆放完一个分组的所有控件后要调用end()方法使后面添加的控件隶属于其父分组。

绘制基本控件

在FLTK中绘制基本控件并显示需要以下几个步骤:

  1. 创建一个窗口
  2. (可选)创建分组
  3. 创建控件
  4. 窗口调用end()方法
  5. 显示窗口
  6. 运行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-回调函数

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐