Читать книгу 📗 "Основы программирования в Linux - Мэтью Нейл"
GtkWidget +---- GtkEntry +---- GtkSpinButtonИ снова API понятен, и мы перечислим наиболее часто применяемые вызовы:
<b>GtkWidget* gtk_spin_button_new(GtkAdjustment *adjustment,</b><b> gdouble climb_rate, guint digits);</b><b>GtkWidget* gtk_spin_button_new_with_range(gdouble min, gdouble max,</b><b> gdouble step);</b><b>void gtk_spin_button_set_digits(GtkSpinButton *spin_button, guint digits);</b><b>void gtk_spin_button_set_increments(GtkSpinButton *spin_button,</b><b> gdouble step, gdouble page);</b><b>void gtk_spin_button_set_range(GtkSpinButton *spin_button, gdouble min,</b><b> gdouble max);</b><b>gdouble gtk_spin_button_get_value(GtkSpinButton *spin_button);</b><b>gint gtk_spin_button_get_value_as_int(GtkSpinButton *spin_button);</b><b>void gtk_spin_button_set_value(GtkSpinButton *spin button, gdouble value);</b>Для создания виджета
GtkSpinButtongtk_spin_button_newGtkAdjustmentGtkAdjustmentGtkHScaleGtkVScaleДля создания объекта типа
GtkAdjustment<b>GtkObject* gtk_adjustment_new(gdouble value, gdouble lower,</b><b> gdouble upper, gdouble step_increment,</b><b> gdouble page_increment, gdouble page_size);</b>Значения параметров
step_incrementpage_incrementGtkSpinButtonstep_incrementpage_incrementpage_sizeGtkSpinButtonВторой параметр,
climb_rategtk_spin_button_newdigitsdigitsФункция
gtk_spin_button_new_with_rangeGtkAdjustmentПрочесть текущее значение очень легко благодаря функции
gtk_spin_button_getvaluegtk_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
Вы уже видели виджет кнопки
GtkButtonGtkButtonGtkButton +----GtkToggleButton +----GtkCheckButton +----GtkRadioButtonКак видно из иерархии виджетов, кнопка-переключатель типа
GtkToggleButtonGtkButtonGtkCheckButtonGtkToggleButtonGtkRadioButtonGtkToggleButton
Виджет
GtkToggleButtonGtkButtonGtkToggleButtonGtkToggleButtonclicked