Шрифт:
Для создания объекта типа
GtkAdjustment
передайте в функцию нижнюю и верхнюю границы и размер приращения.
GtkObject* gtk_adjustment_new(gdouble value, gdouble lower,
gdouble upper, gdouble step_increment,
gdouble page_increment, gdouble page_size);
Значения параметров
step_increment
и page_increment
задают величину минимального и максимального приращений, В случае кнопки-счетчика GtkSpinButton
параметр step_increment
определяет, насколько изменится значение при щелчке мышью стрелки виджета. Параметры page_increment
и page_size
в виджетах GtkSpinButton
не важны. Второй параметр,
climb_rate
, функции gtk_spin_button_new
управляет скоростью прокрутки значений при нажатии и удерживании кнопки со стрелкой. И наконец, параметр digits
задает точность представления числового значения, виджета, если, например, digits
равен 3, кнопка-счетчик отобразит 0.00. Функция
gtk_spin_button_new_with_range
— удобный способ создания объекта GtkAdjustment
. Просто задайте нижнюю и верхнюю границы и величину приращения. Прочесть текущее значение очень легко благодаря функции
gtk_spin_button_getvalue
, а если вам нужно целое число, можно применить функцию gtk_spin_button_get_value_as_int
. Выполните упражнение 16.5.
Упражнение 16.5. Использование виджета
GtkSpinButton
Сейчас мы посмотрим в коротком примере, как действует кнопка-счетчик GtkSpinButton. Назовите файл spin.с.
#include <gtk/gtk.h>
void closeApp(GtkWidget *window, gpointer data) {
gtk_main_quit;
}
int main(int argc, char *argv[]) {
GtkWidget* window;
GtkWidget *spinbutton;
GtkObject *adjustment;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_default_size(GTK_WINDOW(window), 300, 200);
g_signal_connect(GTK_OBJECT(window), "destroy",
GTK_SIGNAL_FUNC(closeApp), NULL);
adjustment = gtk_adjustment_new(100.0, 50.0, 150.0, 0.5, 0.05, 0.05);
spinbutton = gtk_spin_button_new(GTK_ADJUSTMENT(adjustment), 0.01, 2);
gtk_container_add(GTK_CONTAINER(window), spinbutton);
gtk_widget_show_all(window);
gtk_main;
return 0;
}
Когда вы выполните программу, то получите кнопку-счетчик, ограниченную диапазоном значений 50–150 (рис. 16.9).
Рис. 16.9
GtkButton
Вы уже видели виджет кнопки
GtkButton
в действии, но существует несколько виджетов, потомков GtkButton
, с чуть большими функциональными возможностями, заслуживающими упоминания.
GtkButton
+----GtkToggleButton
+----GtkCheckButton
+----GtkRadioButton
Как видно из иерархии виджетов, кнопка-переключатель типа
GtkToggleButton
— прямой потомок кнопки GtkButton
, кнопка-флажок GtkCheckButton
— кнопки-выключателя GtkToggleButton
и то же самое для переключателя GtkRadioButton
, причем каждый дочерний виджет предназначен для определенных задач. GtkToggleButton
Виджет
GtkToggleButton
идентичен виджету GtkButton
за исключением одной важной детали: GtkToggleButton
обладает состоянием. Это означает, что кнопка-выключатель может быть включена или выключена. Когда пользователь щелкает мышью виджет GtkToggleButton
, последний стандартным способом порождает сигнал clicked
и изменяет (или "переключает") свое состояние. API у виджета
GtkToggleButton
очень простой:
GtkWidget* gtk_toggle_button_new(void);
GtkWidget* gtk_toggle_button_new_with_label(const gchar* label);
gboolean gtk_toggle_button_get_active(GtkToggleButton *toggle_button);
void gtk_toggle_button_set_active(GtkToggleButton *toggle_button,
gboolean is_active);