Sehr Umfangreiche Webseite zum Programmieren in C Perl CGI, Skripting, Linux, Systemprogrammierung C C++ C/C++ ANSI C Linux Windows GUI gtk gtk+ Gimp Toolkit Label Toolkit Widget GUI gtk gtk+ Gimp Toolkit Label Toolkit Widget Label und Toolkit Widget

Label Widget           zurück Ein Kapitel tiefer zum Inhaltsverzeichnis

Labels sind simple Widgets, welche einen Bereich darstellen, der mit Text gefüllt wird. Wir wollen gar nicht lange herumreden. Erzeugen können Sie einen Label mit der Funktion ...

GtkWidget *gtk_label_new(cons gchar *string);

Für den Parameter können Sie den Text für das Label eingeben. Nun folgen weitere Funktionen, für ein Label, die vorwiegend zur Darstellung diese Widgets dienen.

Wollen Sie das neu erzeugte Label (zum Teil) Unterstreichen, können Sie die Funktion ...

void gtk_label_set_pattern(GtkLabel *label, const gchar *pattern);

... verwenden. Mit ...

gtk_label_set_pattern(GTK_LABEL(label), "_____");

... unterstreichen Sie zum Beispiel die ersten fünf Zeichen von label.

Um die Position des Labels auszurichten, gibt es die Funktion ...

void gtk_label_set_justify(GtkLabel *label, GtkJustification jtype);

Folgende Selbstaussagende Aufzählungstypen können Sie für den zweiten Parameter verwenden ...

GTK_JUSTIFY_LEFT, GTK_JUSTIFY_RIGHT, GTK_JUSTIFY_CENTER,GTK_JUSTIFY_FILL

GTK_JUSTIFY_CENTER ist der Default-Wert mit dem unser Label erzeugt wird.

Wollen Sie ein Label nachträglich Verändern (überschreiben), können Sie dies mit folgender Funktion machen ...

void gtk_label_set_text(GtkLabel *label, const gchar *new_text);

Beim zweiten Parameter geben Sie Ihren Neuen Text ein, welcher im Label des ersten Parameter überschrieben werden soll.

Und sollten Sie den Inhalt von einem Label benötigen, dann ist diese Funktion dafür gedacht ...

void gtk_label_get(GtkLabel *label, const gchar **string);

Wollen wir doch mal ein Programmbeispiel, für das Label-Widget und einigen Funktion, ansehen ...

#include <gtk/gtk.h>


void ende_cb(GtkObject *object)
{
 gtk_main_quit();
}


int main(int argc, char **argv)
{
 GtkWidget *fenster;
 GtkWidget *box, *box2;
 GtkWidget *label1, *label2, *label3;
 GtkWidget *button_quit;
 gchar *string;

 /*Gtk initialisieren*/
 gtk_init(&argc, &argv);
 /*Ein neues Fenster erstellen*/
 fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 /*Buttons erstellen*/

 button_quit  = gtk_button_new_with_label("Ende");
 /*Neue Box erstellen*/
 box = gtk_vbox_new(TRUE,10);

 label1 = gtk_label_new("Hallo Welt, dies ist Label1\nund er ist total Sinnlos\n"
 "aber Hallo wird unterstrichen");
 /*Wir Unterstreichen das Wort Hallo in Label1*/
 gtk_label_set_pattern(GTK_LABEL(label1),"______");
 label2 = gtk_label_new("Die ist Label 2\nund der ist Linksausgerichtet");
 gtk_label_set_justify(GTK_LABEL(label2),GTK_JUSTIFY_LEFT);
 label3 = gtk_label_new("Wird ja noch\nbesser\nZeile beginnt\nam Anfang\nbeim newline");
 gtk_label_set_line_wrap(GTK_LABEL(label3), TRUE);
 /*Inhalt von Label 1 auslesen*/
 gtk_label_get(GTK_LABEL(label1), &string);
 g_print("%s\n",string);

 /*Signale registrieren*/
 gtk_signal_connect_object(GTK_OBJECT(button_quit), "clicked",
                           GTK_SIGNAL_FUNC(ende_cb), GTK_OBJECT(fenster));
 gtk_signal_connect(GTK_OBJECT(fenster), "destroy",
                    GTK_SIGNAL_FUNC(ende_cb), NULL);


 /*Fensterposition*/
 gtk_window_set_position(GTK_WINDOW(fenster),GTK_WIN_POS_CENTER);

 gtk_container_set_border_width(GTK_CONTAINER(fenster),25);

 /*Nun alles rein in die Box....*/
 gtk_box_pack_start(GTK_BOX(box), label1, FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box), label2, FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box), label3, FALSE, FALSE, 0);
 gtk_box_pack_start(GTK_BOX(box), button_quit, FALSE, FALSE, 20);


 gtk_container_add(GTK_CONTAINER(fenster),box);

 /*Zeigs uns.....*/
 gtk_widget_show_all(fenster);

 gtk_main();

 return 0;
}

Und so könnte es aussehen ...

Toolkit Widget           zurück Ein Kapitel tiefer zum Inhaltsverzeichnis

Jeder kennt sie, wenn Sie mit der Maus über einen Button oder ähnlich fahren, popt aus heiterem Himmel eine Information über dessen Funktion auf. Hierzu die Funktion zur Erstellung von sogenannten Tooltips ...

GtkTooltips *gtk_tooltips_new(void);

Um einen Tooltip einem bestimmten Widget zuzuordnen, verwendet man die Funktion ...

void gtk_tooltips_set_tip(GtkTooltip *tip, GtkWidget *widget,
                          const gchar *tiptext, const gchar *private);

Hiermit übergeben wir den Tooltip tip an das Widget widget mit dem Text tiptext. Den letzten Parameter benötigen wir nicht und übergeben somit NULL.

Wollen wir das ganze doch mal anhand eines Programms testen ...

#include <gtk/gtk.h>


void ende_cb(GtkObject *object)
{
 gtk_main_quit();
}


int main(int argc, char **argv)
{
 GtkWidget *fenster;
 GtkWidget *box;
 GtkWidget *button_quit, *button;
 GtkTooltips *tip1, *tip2;

 /*Gtk initialisieren*/
 gtk_init(&argc, &argv);
 /*Ein neues Fenster erstellen*/
 fenster = gtk_window_new(GTK_WINDOW_TOPLEVEL);
 /*Buttons erstellen*/

 button_quit  = gtk_button_new_with_label("Ende");
 button       = gtk_button_new_with_label("Knopf");
 /*Neue Box erstellen*/
 box = gtk_vbox_new(TRUE,10);

 tip1 = gtk_tooltips_new();
 tip2 = gtk_tooltips_new();

 gtk_tooltips_set_tip(tip1,button_quit, "Hiermit beenden sie das Programm", NULL);
 gtk_tooltips_set_tip(tip2, button, "Dieser Knopf hat noch keine Funktion", NULL);

 /*Signale registrieren*/
 gtk_signal_connect_object(GTK_OBJECT(button_quit), "clicked",
                           GTK_SIGNAL_FUNC(ende_cb), GTK_OBJECT(fenster));
 gtk_signal_connect(GTK_OBJECT(fenster), "destroy",
                    GTK_SIGNAL_FUNC(ende_cb), NULL);


 /*Fensterposition*/
 gtk_window_set_position(GTK_WINDOW(fenster),GTK_WIN_POS_CENTER);

 gtk_container_set_border_width(GTK_CONTAINER(fenster),25);

 gtk_box_pack_start(GTK_BOX(box), button, FALSE, FALSE, 20);
 gtk_box_pack_start(GTK_BOX(box), button_quit, FALSE, FALSE, 20);


 gtk_container_add(GTK_CONTAINER(fenster),box);

 /*Zeigs uns.....*/
 gtk_widget_show_all(fenster);

 gtk_main();

 return 0;
}

Sobald Sie sich mit dem Cursor über einem Button befinden, bekommen Sie Information über dessen Funktion.

Nun noch ein paar weitere Funktionen, die recht Nützlich sein können. Wollen Sie die Tooltips deaktivieren oder wieder aktivieren, so können Sie folgende Funktionen verwenden ...

void gtk_tooltip_get_enable(GtkTooltip *tip);
void gtk_tooltip_get_disable(GtkTooltip *tip);

Wollen Sie die Ausgabe des Tooltips um n Sekunden verzögern, so können Sie diese Funktion einbauen ...

void gtk_tooltip_set_delay(GtkTooltip *tip, gint delay);

Die Farbe des Tooltips können Sie mit folgender Funktion beeinflussen ...

void gtk_tooltip_set_colors(GtkTooltip *tip,
                            GdkColor Background, GdkColor Foreground);

Weiter mit Entry Widget