В общем-то неплохая вещь... В большинстве end-user программ используется... Для примера возьмем программу с пятью автоматически создаваемыми полями ввода. Все изменения я выделил жирным шрифтом:
#include <stdio.h> #include <stdlib.h> #include <gtk/gtk.h> void delete_event(GtkObject* object) { gtk_main_quit(); }; int main(int argc, char* argv[]) { GtkWidget* window; GtkWidget* edit[5]; GtkWidget* label[5]; GtkWidget* vbox; GtkTooltips* tooltips = NULL; char str[] = "Edit x"; gtk_init(&argc,&argv); vbox = gtk_vbox_new(0,0); window = gtk_window_new(GTK_WINDOW_TOPLEVEL); //Никогда не забывайте устанвливать этот обработчик gtk_signal_connect_object (GTK_OBJECT (window), "delete_event",GTK_SIGNAL_FUNC (delete_event), NULL); //Вы же не хотите, чтобы элементы прилипали к краям? gtk_container_set_border_width (GTK_CONTAINER (window), 10); tooltips = gtk_tooltips_new(); GdkColor fg,bg; fg.red = 65536; fg.blue = 0; fg.green=0; bg.blue = 255; bg.red =0; bg.green = 0; //Создаем и упаковываем по пять меток и пять полей ввода... for(int i=0;i<5;i++) { edit[i] = gtk_entry_new(); sprintf(str,"Edit %d",i); gtk_tooltips_set_tip(tooltips,edit[i],str,NULL); label[i] = gtk_label_new(str); //Загоняем сначала метку, а затем и поле ввода в контейнер gtk_box_pack_start(GTK_BOX(vbox), label[i],TRUE,0,5); gtk_box_pack_start(GTK_BOX(vbox), edit[i],TRUE,0,5); gtk_widget_show(edit[i]); gtk_widget_show(label[i]); }; //Чтобы добавить контейнер в окно... gtk_container_add(GTK_CONTAINER(window), vbox); gtk_widget_show(window); gtk_widget_show(GTK_WIDGET(vbox)); gtk_window_set_title(GTK_WINDOW(window),"Step 6"); gtk_main(); return 0; };
Не очень много изменений, правда? Что подтверждает легкость использования этого виджета... Помимо всего прочего, используются следующие функции:
// Разрешить отображение данного набора // всплывающих подсказок. По умолчанию. void gtk_tooltips_enable( GtkTooltips *tooltips ); // Запретить отображение. void gtk_tooltips_disable( GtkTooltips *tooltips ); // Задержка до появления подсказки (по умолчанию - 500мс) void gtk_tooltips_set_delay( GtkTooltips *tooltips, gint delay ); // Цвета для подсказки, описанные в структурах GdkColor void gtk_tooltips_set_colors( GtkTooltips *tooltips, GdkColor *background, GdkColor *foreground );
Скриншот давать не буду, поскольку всплывающие подсказки не захватываются снимком экрана.