Wprowadzenie do FLTK
14 July 2008
Comments
FLTK czyli Fast Loading Toolkit to mała, poręczna i przenośna (linux/unix, Mac, Solaris, Windows...) biblioteka C++ do tworzenia graficznych interfejsów. Wiele dystrybucji zawieraj pakiet FLTK w swoich repozytoriach, a jeżeli nie ma FLTK to wystarczy pobrać źródła z strony projektu.Hello World
Standardowy program Witaj świecie wygląda tak:#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Box.H>
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(300,180);
Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
window->end();
window->show(argc, argv);
return Fl::run();
}
fltk-config --compile nazwa_pliku.cpp
Fl_Window *window = new Fl_Window(300,180);
Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
box->box(FL_UP_BOX); box->labelsize(36); box->labelfont(FL_BOLD+FL_ITALIC); box->labeltype(FL_SHADOW_LABEL);
window->end(); window->show(argc, argv); return Fl::run();
Zaprezentowany tutaj box to jeden z przykładów widgetów - różnego rodzaju przycisków i pól, które zaraz "przejrzymy" :) Najpierw trochę teorii.
Tworzenie widgetów: widgety tworzymy za pomocą operatora new. Dla większości z nich argumenty konstruktora wyglądają tak:
Fl_Widget(x, y, długość, wysokość, etykieta)
GET/SET: Każdy widget możemy konfigurowany. W przykładzie witaj świecie użyliśmy operacji SET np.: box->box(FL_UP_BOX); co ustawia odpowiedni typ boxa. Notka: metody SET nie wywołują funkcji redraw() - trzeba zrobić to ręcznie.
Przegląd widgetów
W dokumentacji FLTK znajdziemy pełne informacje na temat wszystkich widgetów. Oto przegląd najpopularniejszych. Wykorzystamy program Witaj Świecie z nieco większym oknem :)#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Light_Button.H>
#include <FL/Fl_Repeat_Button.H>
#include <FL/Fl_Return_Button.H>
#include <FL/Fl_Round_Button.H>
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(600,680);
//button zwykły
Fl_Button *but = new Fl_Button(10,10,140,100,"Hello, World!");
//button z checkboxem
Fl_Check_Button *but2 = new Fl_Check_Button(10,115,140,100,"Hello, World!");
//button light
Fl_Light_Button *but3 = new Fl_Light_Button(10,220,140,100,"Hello, World!");
//button repeat - pochodna zwykłego
Fl_Repeat_Button *but4 = new Fl_Repeat_Button(10,325,140,100,"Hello, World!");
//button return - pochodna zwykłego
Fl_Return_Button *but5 = new Fl_Return_Button(10,430,140,100,"Hello, World!");
//button round
Fl_Round_Button *but6 = new Fl_Round_Button(10,535,140,100,"Hello, World!");
window->end();
window->show(argc, argv);
return Fl::run();
}
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Input.H>
#include <FL/Fl_Output.H>
#include <FL/Fl_Multiline_Input.H>
#include <FL/Fl_Multiline_Output.H>
#include <FL/Fl_Text_Display.H>
#include <FL/Fl_Text_Editor.H>
#include <FL/Fl_Help_View.h>
int main(int argc, char **argv) {
Fl_Window *window = new Fl_Window(700,680);
// Input - wprowadzanie tekstu
Fl_Input *inp1 = new Fl_Input(290,10,140,100,"Hello, World!");
// output - wyświetla tekst z value();
Fl_Output *inp2 = new Fl_Output(290,115,140,100,"Hello, World!");
// Fl_Multiline_Input - wielowierszowe wprowadzanie tekstu
Fl_Multiline_Input *inp3 = new Fl_Multiline_Input(290,225,140,100,"Hello, World!");
// Fl_Multiline_Input - wielowierszowe wyświetlanie tekstu
Fl_Multiline_Output *inp4 = new Fl_Multiline_Output(290,330,140,100,"Hello, World!");
inp4->value("aaaaa*N*sssss*N*ssss");
// Text Display - wyświetla tekst z bajerami
Fl_Text_Display *inp5 = new Fl_Text_Display(290,440,140,100,"Hello, World!");
// Text Editor - edytuje tekst z bajerami
Fl_Text_Editor *inp6 = new Fl_Text_Editor(290,550,140,100,"Hello, World!");
// wyświetla tekst, parsuje podstawowe tagi HTML
Fl_Help_View *inp7 = new Fl_Help_View(490,30,140,100,"Hello, World!");
inp7->value("<B>Bold</B><BR>Nowa <I>linia</I>");
window->end();
window->show(argc, argv);
return Fl::run();
}
RkBlog
Comment article