Читать интересную книгу Основы программирования в Linux - Мэтью Нейл

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 283 284 285 286 287 288 289 290 291 ... 324

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>

Для создания виджета GtkSpinButton с помощью функции gtk_spin_button_new вы сначала должны создать объект GtkAdjustment. Виджет GtkAdjustment — это абстрактный объект, содержащий логику, касающуюся управления значениями с ограничениями. Он также применяется и в других виджетах, таких как GtkHScale и GtkVScale.

Для создания объекта типа 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_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 &lt;gtk/gtk.h&gt;

void closeApp(GtkWidget *window, gpointer data) {

 gtk_main_quit();

}

int main(int argc, char *argv[]) {

 GtkWidget* window;

 GtkWidget *spinbutton;

 GtkObject *adjustment;

 gtk_init(&amp;argc, &amp;argv);

 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

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

 g_signal_connect(GTK_OBJECT(window), &quot;destroy&quot;,

  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 и изменяет (или "переключает") свое состояние.

1 ... 283 284 285 286 287 288 289 290 291 ... 324
На этом сайте Вы можете читать книги онлайн бесплатно русская версия Основы программирования в Linux - Мэтью Нейл.

Оставить комментарий