Вход/Регистрация
Основы программирования в Linux
вернуться

Мэтью Нейл

Шрифт:

 gtk_entry_set_visibility(GTK_ENTRY(password_entry), FALSE);

 ok_button = gtk_button_new_with_label("Ok");

 g_signal_connect(GTK_OBJECT(ok_button), "clicked",

GTK_SIGNAL_FUNC(button_clicked), password_entry);

 hbox1 = gtk_hbox_new(TRUE, 5);

 hbox2 = gtk_hbox_new(TRUE, 5);

 vbox = gtk_vbox_new(FALSE, 10);

 gtk_box_pack_start(GTK_BOX(hbox1), username_label, TRUE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox1), username_entry, TRUE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox2), password_label, TRUE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(hbox2), password_entry, TRUE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(vbox), hbox1, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(vbox), hbox2, FALSE, FALSE, 5);

 gtk_box_pack_start(GTK_BOX(vbox), ck_button, FALSE, FALSE, 5);

 gtk_container_add(GTK_CONTAINER(window), vbox);

 gtk_widget_show_all(window);

 gtk_main;

 return 0;

}

Когда вы запустите программу, то получите окно, показанное на рис. 16.8.

Рис. 16.8 

Как это работает

Программа создает два виджета типа

GtkEntry
,
username_entry
и
password_entry
, а также задает видимость
password_entry
, равной
FALSE
, чтобы скрыть введенный пароль. Затем она формирует кнопку
GtkButton
, с помощью которой вы связываете сигнал
clicked
с функцией обратного вызова
button_clicked
.

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

Обратите внимание на то, что для вставки виджетов в свои контейнеры вы много раз повторили операторы

gtk_box_pack_start
. Для сокращения этого повторяющегося программного кода в последующих примерах будет определена вспомогательная функция.

GtkSpinButton

Порой вам нужно, чтобы пользователь ввел числовое значение, например, максимальную скорость или размер инструмента, и в такой ситуации виджет

GtkSpinButton
(кнопка-счетчик) идеален. Он ограничивает ввод пользователя только цифровыми символами и можно задать диапазон допустимых значений от нижней до верхней границы. Виджет также содержит стрелки, направленные вверх и вниз, так что пользователь может "накручивать" значение, для удобства пользуясь только мышью.

GtkWidget

 +---- GtkEntry

+---- GtkSpinButton

И снова API понятен, и мы перечислим наиболее часто применяемые вызовы:

GtkWidget* gtk_spin_button_new(GtkAdjustment *adjustment,

 gdouble climb_rate, guint digits);

GtkWidget* gtk_spin_button_new_with_range(gdouble min, gdouble max,

 gdouble step);

void gtk_spin_button_set_digits(GtkSpinButton *spin_button, guint digits);

void gtk_spin_button_set_increments(GtkSpinButton *spin_button,

 gdouble step, gdouble page);

void gtk_spin_button_set_range(GtkSpinButton *spin_button, gdouble min,

 gdouble max);

gdouble gtk_spin_button_get_value(GtkSpinButton *spin_button);

gint gtk_spin_button_get_value_as_int(GtkSpinButton *spin_button);

void gtk_spin_button_set_value(GtkSpinButton *spin button, gdouble value);

Для создания виджета

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

  • Читать дальше
  • 1
  • ...
  • 352
  • 353
  • 354
  • 355
  • 356
  • 357
  • 358
  • 359
  • 360
  • 361
  • 362
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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