Чтение онлайн

на главную - закладки

Жанры

Основы программирования в Linux
Шрифт:

 GtkWidget * widget) {

 GtkWidget *label = gtk_label_new(caption);

 GtkWidget *hbox = gtk_hbox_new(TRUE, 4);

 gtk_container_add(GTK_CONTAINER(hbox), label);

 gtk_container_add(GTK_CONTAINER(hbox), widget);

 gtk_container_add(box, hbox);

}

3. 

print_active
— еще одна вспомогательная функция, которая выводит текущее состояние заданной кнопки-выключателя
GtkToggleButton
со строкой описания. Он вызывается из функции
button_clicked
, функции обратного вызова, связанной с сигналом
clicked
кнопки OK. При каждом щелчке мышью этой кнопки вы получаете на экране отчет о состоянии кнопок:

void print_active(char * button_name, GtkToggleButton* button) {

 gboolean active = gtk_toggle_button_get_active(button);

 printf("%s is %s\n", button_name, active?"active":"not active");

}

void button_clicked(GtkWidget *button, gpointer data) {

 print_active("Checkbutton", GTK_TOGGLE_BUTTON(checkbutton));

 print_active("Togglebutton", GTK_TOGGLE_BUTTON(togglebutton));

 print_active("Radiobutton1", GTK_TOGGLE_BUTTON(radiobutton1));

 print_active("Radiobutton2", GTK_TOGGLE_BUTTON(radiobutton2));

 printf("\n");

}

4. В функции

main
вы создаете виджеты кнопок, поочередно помещаете их в контейнер
GtkVBox
, добавив пояснительные метки, и связываете сигнал обратного вызова с кнопкой OK:

gint main(gint argc, gchar *argv[]) {

 GtkWidget* window;

 GtkWidget *button;

 GtkWidget *vbox;

 gtk_init(&argc, &argv);

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

 gtk_window_set_default_size(GTK_WINDOW(window), 200, 200);

 g_signal_connect(GTK_OBJECT(window), "destroy",

GTK_SIGNAL_FUNC(closeApp), NULL);

 button = gtk_button_new_with_label("Ok");

 togglebutton = gtk_toggle_button_new_with_label("Toggle");

 checkbutton = gtk_check_button_new;

 radiobutton1 = gtk_radio_button_new(NULL);

 radiobutton2 =

gtk_radio_button_new_from_widget(GTK_RADIO_BUTTON(radiobutton1));

 vbox = gtk_vbox_new(TRUE, 4);

 add_widget_with_label(GTK_CONTAINER(vbox), "ToggleButton:",

togglebutton);

 add_widget_with_label(GTK_CONTAINER(vbox), "CheckButton:",

checkbutton);

 add_widget_with_label(GTK_CONTAINER(vbox), "Radio 1:", radiobutton1);

 add_widget_with_label(GTK_CONTAINER(vbox), "Radio 2:", radiobutton2);

 add_widget_with_label(GTK_CONTAINER(vbox), "Button:", button);

 g_signal_connect(GTK_OBJECT(button), "clicked",

GTK_SIGNAL_FUNC(button_clicked), NULL);

 gtk_container_add(GTK_CONTAINER(window), vbox);

 gtk_widget_show_all(window);

 gtk_main;

 return 0;

}

На

рис. 16.10 показана программа buttons.c в действии с виджетами
GtkButton
четырех часто применяемых типов.

Рис. 16.10

Щелкните мышью кнопку OK, чтобы увидеть состояние разных кнопок.

Данная программа — простой пример использования кнопок

GtkButton
четырех типов — показывает, как можно считать состояние кнопки типа
GtkToggleButton
,
GtkCheckButton
и
GtkRadioButton
с помощью единственной функции
gtk_toggle_button_get_active
. Это одно из огромных преимуществ объектно-ориентированного подхода — поскольку вам не нужны отдельные функции
get_active
для каждого типа кнопки, вы можете сократить требующийся программный код.

GtkTreeView

К этому моменту мы рассмотрели несколько простых виджетов GTK+, но не все виджеты представляют собой однострочные инструменты для ввода или отображения. Сложность виджетов ничем не ограничивается, и

GtkTreeView
— яркий пример виджета, инкапсулирующего огромный объем функциональных возможностей.

GtkWidget

 +---- GtkContainer

+---- GtkTreeView

GtkTreeView
член семейства виджетов, новых для комплекта GTK+ 2, создающий представление данных в виде дерева или списка наподобие тех, которые вы можете встретить в электронной таблице или файловом менеджере. С помощью виджета
GtkTreeView
можно создать сложные представления данных, смешивая текст, растровую графику и даже данные, вводимые с помощью виджетов
GtkEntry
, и т.д.

Самый быстрый способ испытания

GtkTreeView
— запуск приложения gtk-demo, которое поставляется вместе с GTK+. Демонстрационное приложение показывает возможности всех виджетов GTK+, включая
GtkTreeView
(рис. 16.11).

Рис. 16.11

Семейство

GtkTreeView
составляется из четырех компонентов:

 

GtkTreeView
— отображение дерева или списка;

 

GtkTreeViewColumn
— представление столбца списка или дерева;

Поделиться:
Популярные книги

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Отморозок 2

Поповский Андрей Владимирович
2. Отморозок
Фантастика:
попаданцы
5.50
рейтинг книги
Отморозок 2

"Зарубежный детектив 2026-7". Компиляция. Книги 1-9

Адлер-Ольсен Юсси
Зарубежный детектив
Детективы:
триллеры
классические детективы
криминальные детективы
полицейские детективы
крутой детектив
5.00
рейтинг книги
Зарубежный детектив 2026-7. Компиляция. Книги 1-9

Матабар X

Клеванский Кирилл Сергеевич
10. Матабар
Проза:
магический реализм
5.00
рейтинг книги
Матабар X

Вернувшийся: Посол. Том IV

Vector
4. Вернувшийся
Фантастика:
космическая фантастика
киберпанк
5.00
рейтинг книги
Вернувшийся: Посол. Том IV

Тень мачехи

Гимт Светлана
Любовные романы:
современные любовные романы
5.00
рейтинг книги
Тень мачехи

Жозеф Бальзамо. Том 1

Дюма-отец Александр
1. Записки врача
Приключения:
исторические приключения
7.57
рейтинг книги
Жозеф Бальзамо. Том 1

Светила

Каттон Элеанор
Проза:
историческая проза
7.58
рейтинг книги
Светила

"Избранные историко-биографические романы". Компиляция. Книги 1-10

Джордж Маргарет
Проза:
историческая проза
5.00
рейтинг книги
Избранные историко-биографические романы. Компиляция. Книги 1-10

Кухня народов СССР

Фельдман Исай Абрамович
Дом и Семья:
кулинария
7.00
рейтинг книги
Кухня народов СССР

Газлайтер. Том 6

Володин Григорий Григорьевич
6. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 6

"Фантастика 2024-48". Компиляция. Книги 1-29

Вишневский Сергей Викторович
Фантастика 2024. Компиляция
Фантастика:
фэнтези
героическая фантастика
боевая фантастика
юмористическая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
Фантастика 2024-48. Компиляция. Книги 1-29

Том 12. Курт Воннегут

Воннегут Курт
Фантастика:
научная фантастика
5.00
рейтинг книги
Том 12. Курт Воннегут

Полковнику нигде…

Капустин Вад
Фантастика:
юмористическая фантастика
5.00
рейтинг книги
Полковнику нигде…