GtkSpinButton
GtkSpinButton — Получение целого или вещественного числа от пользователя
Функции
Свойства
| GtkAdjustment * | adjustment | Чтение / Запись |
| double | climb-rate | Чтение / Запись |
| guint | digits | Чтение / Запись |
| gboolean | numeric | Чтение / Запись |
| gboolean | snap-to-ticks | Чтение / Запись |
| GtkSpinButtonUpdatePolicy | update-policy | Чтение / Запись |
| double | value | Чтение / Запись |
| gboolean | wrap | Чтение / Запись |
Сигналы
| void | change-value | Действие |
| int | input | Выполнить последним |
| gboolean | output | Выполнить последним |
| void | value-changed | Выполнить последним |
| void | wrapped | Выполнить последним |
Типы и Значения
| GtkSpinButton | |
| перечисление | GtkSpinButtonUpdatePolicy |
| перечисление | GtkSpinType |
| #определить | GTK_INPUT_ERROR |
Иерархия объектов
GObject
╰── GInitiallyUnowned
╰── GtkWidget
╰── GtkSpinButton
Реализованные интерфейсы
GtkSpinButton реализует GtkAccessible, GtkBuildable, GtkConstraintTarget, GtkOrientable, GtkEditable и GtkCellEditable.
Файлы включения
#include <gtk/gtk.h>
Описание
A GtkSpinButton — это идеальный способ позволить пользователю установить значение некоторого атрибута. Вместо того, чтобы вводить число напрямую в GtkEntry, GtkSpinButton позволяет пользователю нажимать на одну из двух стрелок для увеличения или уменьшения отображаемого значения. Значение всё равно можно ввести, при этом есть возможность проверить, находится ли оно в заданном диапазоне.
Основные свойства GtkSpinButton реализуются с помощью настройки. Подробности о свойствах настройки см. в разделе GtkAdjustment.
Обратите внимание, что GtkSpinButton по умолчанию делает свой ввод достаточно широким, чтобы вместить нижнюю и верхнюю границы настройки. Если этого не нужно, автоматическое изменение размера можно отключить, явно задав “width-chars” значению, отличному от -1.
Использование GtkSpinButton для получения целого числа
Использование GtkSpinButton для получения значения с плавающей точкой
CSS-узлы
Основной CSS-узел GtkSpinButton имеет имя spinbutton. Он создаёт дочерние узлы для поля ввода и двух кнопок с этими именами. Узлы кнопок имеют стили классов .up и .down. Дочерние узлы GtkText (если они присутствуют) располагаются под текстовым узлом. Ориентация спин-кнопки отражается в классе стиля .vertical или .horizontal на основном узле.
Доступность
GtkSpinButton использует роль GTK_ACCESSIBLE_ROLE_SPIN_BUTTON.
Функции
gtk_spin_button_new ()
GtkWidget * gtk_spin_button_new (GtkAdjustment *adjustment,double climb_rate,guint digits);
Создаёт новый GtkSpinButton.
Параметры
adjustment | объект GtkAdjustment, который должен использовать этот элемент управления списком, или | [allow-none] |
climb_rate | указывает, насколько увеличится скорость изменения значения, если вы продолжите удерживать кнопку «вверх/вниз» или клавишу со стрелками | |
digits | количество знаков после запятой для отображения |
Возвращает
Новый элемент управления списком в качестве GtkWidget
gtk_spin_button_new_with_range ()
GtkWidget * gtk_spin_button_new_with_range (double min,double max,double step);
Это удобный конструктор, который позволяет создать числовой GtkSpinButton без ручного создания объекта настройки. Значение по умолчанию изначально устанавливается в минимальное значение, а шаг изменения — 10 * step. Точность элемента управления списком эквивалентна точности step .
Обратите внимание, что способ получения точности работает лучше, если step является степенью десяти. Если полученная точность не подходит для ваших нужд, используйте gtk_spin_button_set_digits(), чтобы исправить её.
Параметры
min | Минимальное допустимое значение | |
max | Максимальное допустимое значение | |
step | Приращение, добавляемое или вычитаемое при вращении элемента управления |
Возвращает
Новый элемент управления списком в качестве GtkWidget
gtk_spin_button_set_adjustment ()
void gtk_spin_button_set_adjustment (GtkSpinButton *spin_button,GtkAdjustment *adjustment);
Заменяет GtkAdjustment, связанный с spin_button.
Параметры
spin_button | элемент управления списком GtkSpinButton | |
adjustment | объект GtkAdjustment для замены существующей настройки |
gtk_spin_button_get_adjustment ()
GtkAdjustment *
gtk_spin_button_get_adjustment (GtkSpinButton *spin_button); Получить настройку, связанную с GtkSpinButton
Параметры
spin_button | элемент управления списком GtkSpinButton |
gtk_spin_button_set_digits ()
void gtk_spin_button_set_digits (GtkSpinButton *spin_button,guint digits);
Установить точность отображения, используемую spin_button . Допускается точность до 20 знаков.
Параметры
spin_button | элемент управления списком GtkSpinButton | |
digits | количество знаков после запятой для отображения значения элемента управления списком |
gtk_spin_button_get_digits ()
guint
gtk_spin_button_get_digits (GtkSpinButton *spin_button); Получает точность spin_button . Смотрите gtk_spin_button_set_digits().
Параметры
spin_button | элемент управления списком GtkSpinButton |
Возвращает
текущую точность
gtk_spin_button_set_increments ()
void gtk_spin_button_set_increments (GtkSpinButton *spin_button,double step,double page);
Устанавливает шаговые и страничные приращения для spin_button. Это влияет на скорость изменения значения при активации стрелок элемента управления списком.
Параметры
spin_button | элемент управления списком GtkSpinButton | |
step | приращение, применяемое при одном нажатии кнопки. | |
page | приращение, применяемое при втором нажатии кнопки. |
gtk_spin_button_get_increments ()
void gtk_spin_button_get_increments (GtkSpinButton *spin_button,double *step,double *page);
Получает текущие шаговые и страничные приращения, используемые spin_button. Смотрите gtk_spin_button_set_increments().
Параметры
spin_button | элемент управления списком GtkSpinButton | |
step | место для хранения шагового приращения или | [out][allow-none] |
page | место для хранения страничного приращения или | [out][allow-none] |
gtk_spin_button_set_range ()
void gtk_spin_button_set_range (GtkSpinButton *spin_button,double min,double max);
Устанавливает минимальное и максимальное допустимые значения для spin_button.
Если текущее значение находится вне этого диапазона, оно будет скорректировано для соответствия диапазону, в противном случае оно останется неизменным.
Параметры
spin_button | элемент управления списком GtkSpinButton | |
min | минимальное допустимое значение | |
max | максимальное допустимое значение |
gtk_spin_button_get_range ()
void gtk_spin_button_get_range (GtkSpinButton *spin_button,double *min,double *max);
Получает диапазон, разрешённый для spin_button. См. gtk_spin_button_set_range().
Параметры
spin_button | ||
min | место для хранения минимального допустимого значения, или | [out][optional] |
max | место для хранения максимального допустимого значения, или | [out][optional] |
gtk_spin_button_get_value_as_int ()
int
gtk_spin_button_get_value_as_int (GtkSpinButton *spin_button); Получает значение spin_button, представленное как целое число.
Параметры
spin_button |
Возвращает
значение spin_button
gtk_spin_button_set_value ()
void gtk_spin_button_set_value (GtkSpinButton *spin_button,double value);
Устанавливает значение spin_button.
Параметры
spin_button | ||
value | новое значение |
gtk_spin_button_get_value ()
double
gtk_spin_button_get_value (GtkSpinButton *spin_button); Получает значение в spin_button.
Параметры
spin_button |
Возвращает
значение spin_button
gtk_spin_button_set_update_policy ()
void gtk_spin_button_set_update_policy (GtkSpinButton *spin_button,GtkSpinButtonUpdatePolicy policy);
Устанавливает поведение обновления для спин-кнопки. Это определяет, обновляется ли спин-кнопка всегда или только при установке допустимого значения.
Параметры
spin_button | ||
policy | значение GtkSpinButtonUpdatePolicy |
gtk_spin_button_get_update_policy ()
GtkSpinButtonUpdatePolicy
gtk_spin_button_get_update_policy (GtkSpinButton *spin_button); Получает поведение обновления спин-кнопки. См. gtk_spin_button_set_update_policy().
Параметры
spin_button |
Возвращает
текущую политику обновления
gtk_spin_button_set_numeric ()
void gtk_spin_button_set_numeric (GtkSpinButton *spin_button,gboolean numeric);
Устанавливает флаг, определяющий, можно ли вводить в спин-кнопку нечисловые символы.
Параметры
spin_button | ||
numeric | флаг, указывающий, разрешено ли вводить только числовые значения |
gtk_spin_button_get_numeric ()
gboolean
gtk_spin_button_get_numeric (GtkSpinButton *spin_button); Возвращает, можно ли вводить нечисловые символы в спин-кнопку. См. gtk_spin_button_set_numeric().
Параметры
spin_button |
Возвращает
TRUE , если разрешено вводить только числовые значения
gtk_spin_button_set_wrap ()
void gtk_spin_button_set_wrap (GtkSpinButton *spin_button,gboolean wrap);
Устанавливает флаг, определяющий, обходит ли значение спин-кнопки границы диапазона при превышении верхнего или нижнего предела.
Параметры
spin_button | ||
wrap | флаг, указывающий, выполняется ли поведение обхода |
gtk_spin_button_get_wrap ()
gboolean
gtk_spin_button_get_wrap (GtkSpinButton *spin_button); Возвращает, обходит ли значение спин-кнопки границы диапазона при превышении верхнего или нижнего предела. См. gtk_spin_button_set_wrap().
Параметры
spin_button |
Возвращает
TRUE , если значение спин-кнопки обходит границы
gtk_spin_button_set_snap_to_ticks ()
void gtk_spin_button_set_snap_to_ticks (GtkSpinButton *spin_button,gboolean snap_to_ticks);
Устанавливает политику, определяющую, корректируются ли значения до ближайшего шага инкремента при активации спин-кнопки после ввода недопустимого значения.
Параметры
spin_button | ||
snap_to_ticks | флаг, указывающий, должны ли корректироваться недопустимые значения |
gtk_spin_button_get_snap_to_ticks ()
gboolean
gtk_spin_button_get_snap_to_ticks (GtkSpinButton *spin_button); Возвращает, корректируются ли значения до ближайшего шага. См. gtk_spin_button_set_snap_to_ticks().
Параметры
spin_button |
Возвращает
TRUE , если значения приближены к ближайшему шагу
gtk_spin_button_set_climb_rate ()
void gtk_spin_button_set_climb_rate (GtkSpinButton *spin_button,double climb_rate);
Устанавливает скорость ускорения при многократных изменениях значения при удерживании кнопки или клавиши.
Параметры
spin_button | ||
climb_rate | скорость ускорения, должна быть >= 0 |
gtk_spin_button_get_climb_rate ()
double
gtk_spin_button_get_climb_rate (GtkSpinButton *spin_button); Возвращает скорость ускорения при многократных изменениях.
Параметры
spin_button |
Возвращает
скорость ускорения
gtk_spin_button_configure ()
void gtk_spin_button_configure (GtkSpinButton *spin_button,GtkAdjustment *adjustment,double climb_rate,guint digits);
Изменяет свойства существующей кнопки спин-ввода. Соответственно обновляются регулировка, скорость изменения и количество десятичных знаков.
Параметры
spin_button | ||
adjustment | a GtkAdjustment для замены текущей регулировки кнопки спин-ввода, или | [nullable] |
climb_rate | новая скорость изменения | |
digits | количество десятичных знаков, отображаемых в кнопке спин-ввода |
gtk_spin_button_spin ()
void gtk_spin_button_spin (GtkSpinButton *spin_button,GtkSpinType direction,double increment);
Увеличивает или уменьшает значение кнопки спин-ввода в указанном направлении на указанную величину.
Параметры
spin_button | ||
direction | a GtkSpinType, указывающий направление вращения | |
increment | приращение шага, применяемое в указанном направлении |
gtk_spin_button_update ()
void
gtk_spin_button_update (GtkSpinButton *spin_button); Принудительно обновляет кнопку спин-ввода.
Параметры
spin_button |
Типы и значения
GtkSpinButton
typedef struct _GtkSpinButton GtkSpinButton;
перечисление GtkSpinButtonUpdatePolicy
Политика обновления кнопки спин-ввода определяет, отображаются ли значения кнопки, даже если они выходят за пределы её регулировки. См. gtk_spin_button_set_update_policy().
Элементы
GTK_UPDATE_ALWAYS | При обновлении GtkSpinButton значение всегда отображается | |
GTK_UPDATE_IF_VALID | При обновлении GtkSpinButton значение отображается только если оно допустимо в пределах регулировки кнопки спин-ввода |
перечисление GtkSpinType
Значения перечисления GtkSpinType используются для указания изменений, которые нужно внести в gtk_spin_button_spin().
Элементы
GTK_SPIN_STEP_FORWARD | Увеличение на значение шага регулировки. | |
GTK_SPIN_STEP_BACKWARD | Уменьшение на значение шага регулировки. | |
GTK_SPIN_PAGE_FORWARD | Увеличение на значение страницы регулировки. | |
GTK_SPIN_PAGE_BACKWARD | Уменьшение на значение страницы регулировки. | |
GTK_SPIN_HOME | Переход к нижней границе регулировки. | |
GTK_SPIN_END | Переход к верхней границе регулировки. | |
GTK_SPIN_USER_DEFINED | Изменение на заданную величину. |
GTK_INPUT_ERROR
#define GTK_INPUT_ERROR -1
Константа, возвращаемая обработчиком сигнала для сигнала “input” в случае неудачи преобразования.
Подробное описание свойств
Свойство “adjustment”
“adjustment” GtkAdjustment *
Регулировка, хранящая значение кнопки спин-ввода.
Владелец: GtkSpinButton
Флаги: Чтение / Запись
Свойство “climb-rate”
“climb-rate” double
Скорость ускорения при удерживании кнопки или клавиши.
Владелец: GtkSpinButton
Флаги: Чтение / Запись
Допустимые значения: >= 0
Значение по умолчанию: 0
Свойство “digits”
“digits” guint
Количество десятичных знаков для отображения.
Владелец: GtkSpinButton
Флаги: Чтение / Запись
Допустимые значения: <= 20
Значение по умолчанию: 0
Свойство “numeric”
“numeric” gboolean
Должны ли игнорироваться нечисловые символы.
Владелец: GtkSpinButton
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “snap-to-ticks”
“snap-to-ticks” gboolean
Автоматически ли изменяются недопустимые значения на ближайшее значение шага кнопки спин-ввода.
Владелец: GtkSpinButton
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Свойство “update-policy”
“update-policy” GtkSpinButtonUpdatePolicy
Обновлять ли кнопку спин-ввода всегда или только при корректном значении.
Владелец: GtkSpinButton
Флаги: Чтение / Запись
Значение по умолчанию: GTK_UPDATE_ALWAYS
Свойство “value”
“value” double
Чтение текущего значения или установка нового значения.
Владелец: GtkSpinButton
Флаги: Чтение / Запись
Значение по умолчанию: 0
Свойство “wrap”
“wrap” gboolean
Нужно ли кнопке спин-ввода переходить на другую сторону при достижении пределов.
Владелец: GtkSpinButton
Флаги: Чтение / Запись
Значение по умолчанию: FALSE
Подробности сигналов
Сигнал “change-value”
void user_function (GtkSpinButton *spin_button, GtkScrollType scroll, gpointer user_data)
Сигнал ::change-value — это сигнал для привязки к горячим клавишам, который генерируется при изменении пользователем значения.
Приложения не должны подключаться к этому сигналу, но могут генерировать его с помощью g_signal_emit_by_name(), если им необходимо программно управлять курсором.
Стандартные сочетания клавиш для этого сигнала — стрелки вверх/вниз и Page Up/Page Down.
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
scroll | тип прокрутки GtkScrollType для указания скорости и величины изменения | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Действие
Сигнал “input”
int user_function (GtkSpinButton *spin_button, gpointer new_value, gpointer user_data)
Сигнал ::input может использоваться для управления преобразованием пользовательского ввода в значение типа double. Обработчик сигнала должен использовать gtk_editable_get_text() для получения текста из спин-бутона и установить new_value в новое значение.
По умолчанию используется преобразование g_strtod().
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
new_value | место для возврата нового значения. | [out][type double] |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE при успешном преобразовании, FALSE если вход не был обработан, и GTK_INPUT_ERROR если преобразование завершилось неудачно.
Флаги: Выполнить последним
Сигнал “output”
gboolean user_function (GtkSpinButton *spin_button, gpointer user_data)
Сигнал ::output может использоваться для изменения формата значения, отображаемого в поле ввода спин-бутона.
// Provides a function to retrieve an integer value from a GtkSpinButton
// and creates a spin button to model percentage values.
int
grab_int_value (GtkSpinButton *button,
gpointer user_data)
{
return gtk_spin_button_get_value_as_int (button);
}
void
create_integer_spin_button (void)
{
GtkWidget *window, *button;
GtkAdjustment *adjustment;
adjustment = gtk_adjustment_new (50.0, 0.0, 100.0, 1.0, 5.0, 0.0);
window = gtk_window_new ();
// creates the spinbutton, with no decimal places
button = gtk_spin_button_new (adjustment, 1.0, 0);
gtk_window_set_child (GTK_WINDOW (window), button);
gtk_widget_show (window);
}Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE если значение было отображено
Флаги: Выполнить последним
Сигнал “value-changed”
void user_function (GtkSpinButton *spin_button, gpointer user_data)
Сигнал ::value-changed генерируется, когда изменяется значение, представленное spinbutton. Также см. сигнал “output”.
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Выполнить последним
Сигнал “wrapped”
void user_function (GtkSpinButton *spin_button, gpointer user_data)
Сигнал ::wrapped генерируется сразу после того, как спин-бутон переходит от максимального к минимальному значению или наоборот.
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Выполнить последним
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer-old.gnome.org/gtk4/4.0/GtkSpinButton.html