FLTK: Fast Light Toolkit
Hallo.
Aktuell beschäftige ich mich mit dem FLTK, dem Fast Light Toolkit (v.1.3.3), welches eine Bibliothek ist, um GUI-Programmierung in C++ zu betreiben. Dafür gibt es offenbar auch eine Python-Anbindung.
Um ein einfaches Fenster zu erzeugen, mit einem Button, der beim Klicken die Farbe ändert ist folgender Code ganz nützlich:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Widget.H>
bool state = true;
void btnpress ( Fl_Widget *w, void *data )
{
if (state)
{
w->labelcolor ( 0x4cff0000 );
w->label ( "@circle" );
w->color ( 0xccff0000 );
}
else
{
w->color ( 0xffb74800 );
w->label ( "@+9circle" );
w->labelcolor ( 0xe7552c00 );
}
state = !state;
}
int main(int argc, char **argv)
{
Fl_Window *window = new Fl_Window(100,100, 340, 340, "Ehhhh! Hello Wörld\0");
Fl_Button *btn = new Fl_Button(20,40,300,100,"");
btn->box(FL_FLAT_BOX);
btn->color ( 0xffb74800 );
btn->label ( "@+9circle" );
btn->labelcolor ( 0xe7552c00 );
btn->align ( FL_ALIGN_TEXT_NEXT_TO_IMAGE );
btn->shortcut (FL_SHIFT + 'b' );
btn->callback ( btnpress, NULL );
window->end();
window->show(argc, argv);
return Fl::run();
}
ptnpress ist ein Callback, der die Farbe des Buttons ändert. new Fl_Window() erzeugt ein Fenster, mit der angegeben Position (x,y), Größe (w,h) und Label, new Fl_Button() erzeugt den Button mit der Positon, Größe und keinem Label.
btn->box legt die Verzierung des Buttons fest, color dessen Farbe, label dessen Labeltext. Wichtig ist hier, dass mit @ ein Sonderzeichen escaped wird, dh. \@circle erzeugt einen Kreis auf dem Button. align richtet den Labeltext aus (hier eigentlich unnütz), shortcut erzeugt einen Tastaturshortcut (hier Shift + b) und callback registriert die Callbackfunktion mit dem Button. Der Callback wird gerufen, wenn sich der Wert ändert (dh. hier: wenn der Button gedrückt wird).
Die Widgets werden automatisch zur letzten erstellten Gruppe hinzugefügt (hier window), bis dessen end()-Methode gerufen wird. windows->show zeigt das Fenster an.
Ich hoffe dieses kleine Beispiel hilft euch FLTK zu verstehen.
Letzte Bearbeitung: 19.12.2015 13:47