GTK: Виджет метки (GtkLabel)

Виджет метки используется главным образом для вывода небольших объемов текстовой информации, такой, как информации о назначении расположенного рядом виджета. При этом данный виджет является достаточно мощным и может использоваться для вывода больших объемов текста с таким форматированием его отдельных фрагментов, как выделение жирным шрифтом или подчеркивание.

Конструктор

Виджет метки может быть создан с помощью следующего конструктора:

GtkWidget *label = gtk_label_new(text);

В качестве значения переменной text должна использоваться строка, которая будет отображаться с помощью виджета после его создания.

Методы

После создания виджета метки отображаемая с помощью него строка может быть изменена путем вызова следующего метода:

gtk_label_set_label(GTK_LABEL(label), text);

Для того, чтобы получить отображаемую с помощью виджета строку, достаточно воспользоваться следующим методом:

gtk_label_get_label(GTK_LABEL(label));

По умолчанию текстовый блок в рамках виджета выравнивается по центру как в горизонтальной, так и в вертикальной плоскости. Для изменения параметров выравнивания текстового блока могут использоваться следующие методы:

gtk_label_set_xalign(GTK_LABEL(label), xalign);
gtk_label_set_yalign(GTK_LABEL(label), yalign);

Параметры xalign и yalign должны иметь значения из диапазона от 0.0 до 1.0, причем значение 0.0 соответствует выравниванию слева или сверху, а 1.0 — выравниванию справа или снизу.

Текст метки может быть сделан выделяемым с помощью следующего метода:

gtk_label_set_selectable(GTK_LABEL(label), selectable);

При использовании значения TRUE параметра selectable пользователь сможет выделить текст метки для копирования и последующей вставки.

Некоторые виджеты не могут использовать мнемонические ссылки, поэтому вместо них эти ссылки используются расположенными рядом виджетами меток, которые передают им фокус при нажатии заданных комбинаций клавиш. Мнемонический виджет может быть задан с помощью следующего метода:

gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);

По умолчанию текст выравнивается по левому краю виджета. Для изменения параметров выравнивания текста может использоваться следующий метод:

gtk_label_set_justify(GTK_LABEL(label), justification);

Параметр justification может принимать следующие значения:

  • GTK_JUSTIFY_LEFT — выравнивание по левому краю виджета
  • GTK_JUSTIFY_RIGHT — выравнивание по правому краю виджета
  • GTK_JUSTIFY_CENTER — выравнивание по центру виджета
  • GTK_JUSTIFY_FILL — заполнение виджета

Пример

Это код простого приложения, создающего окно с виджетом метки:

  1. #include <gtk/gtk.h>
  2.  
  3. static void destroy(GtkWidget *widget, gpointer data)
  4. {
  5.     gtk_main_quit();
  6. }
  7.  
  8. int main(int argc, char *argv[])
  9. {
  10.     gtk_init(&argc, &argv);
  11.  
  12.     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  13.     gtk_window_set_title(GTK_WINDOW(window), "Окно");
  14.     gtk_window_set_default_size(GTK_WINDOW(window), 300, 300);
  15.     g_signal_connect(window, "destroy", G_CALLBACK(destroy), NULL);
  16.  
  17.     GtkWidget *label = gtk_label_new("Это пример виджета метки");
  18.     gtk_container_add(GTK_CONTAINER(window), label);
  19.  
  20.     const char *text = gtk_label_get_text(GTK_LABEL(label));
  21.     printf("%sn", text);
  22.  
  23.     gtk_widget_show_all(window);
  24.  
  25.     gtk_main();
  26.  
  27.     return 0;
  28. }

Label

Загрузить исходный код примера

Он может быть скомпилирован с помощью компилятора GCC путем исполнения следующей команды:

$ gcc label.c `pkg-config --libs --cflags gtk+-3.0` -o label

Также вы можете использовать компилятор CLang:

$ clang label.c `pkg-config --libs --cflags gtk+-3.0` -o label