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.
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();
}
Kompilujemy go najłatwiej poleceniem:
fltk-config --compile nazwa_pliku.cpp
Omówmy kod. Na początku tworzymy okno: gdzie 300 i 180 to odpowiednio długość i wysokość okna:
Fl_Window *window = new Fl_Window(300,180);
Następnie tworzymy Box z tekstem.
20,40 to odpowiednio odległość w poziomie i pionie od górnego lewego rogu,
260,100 - rozmiar boxa:
Fl_Box *box = new Fl_Box(20,40,260,100,"Hello, World!");
Następnie możemy ustawić dodatkowe opcje widgeta - boxa:
box->box(FL_UP_BOX);
box->labelsize(36);
box->labelfont(FL_BOLD+FL_ITALIC);
box->labeltype(FL_SHADOW_LABEL);
I na końcu "wykonujemy" całość:
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)
X, Y - odległość w poziomie i pionie od górnego lewego boku w pikselach.
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.
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();
}
Po kolei prezentowane są kolejne typy Buttonów. Kolejna grupa - Wejście/Wyjście tekstu:
#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();
}
Prezentuje dostępne widgety. Dokładny ich opis znajduje się w dokumentacji FLTK. Na razie tylko je oglądamy :) To by było tyle jeżeli chodzi o najprostsze widgety (są jeszcze np.: "valuators" - widgety głównie stosowane w mikserach muzycznych i podobnych aplikacjach :))
- Dodane: 14.07.2008 przez riklaunim