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