GtkSpinButton
GtkSpinButton — Получение целого или вещественного числа от пользователя
Функции
| void | gtk_spin_button_configure () |
| GtkWidget * | gtk_spin_button_new () |
| GtkWidget * | gtk_spin_button_new_with_range () |
| void | gtk_spin_button_set_adjustment () |
| GtkAdjustment * | gtk_spin_button_get_adjustment () |
| void | gtk_spin_button_set_digits () |
| void | gtk_spin_button_set_increments () |
| void | gtk_spin_button_set_range () |
| gint | gtk_spin_button_get_value_as_int () |
| void | gtk_spin_button_set_value () |
| void | gtk_spin_button_set_update_policy () |
| void | gtk_spin_button_set_numeric () |
| void | gtk_spin_button_spin () |
| void | gtk_spin_button_set_wrap () |
| void | gtk_spin_button_set_snap_to_ticks () |
| void | gtk_spin_button_update () |
| guint | gtk_spin_button_get_digits () |
| void | gtk_spin_button_get_increments () |
| gboolean | gtk_spin_button_get_numeric () |
| void | gtk_spin_button_get_range () |
| gboolean | gtk_spin_button_get_snap_to_ticks () |
| GtkSpinButtonUpdatePolicy | gtk_spin_button_get_update_policy () |
| gdouble | gtk_spin_button_get_value () |
| gboolean | gtk_spin_button_get_wrap () |
Свойства
| GtkAdjustment * | adjustment | Чтение / Запись |
| double | climb-rate | Чтение / Запись |
| guint | digits | Чтение / Запись |
| gboolean | numeric | Чтение / Запись |
| gboolean | snap-to-ticks | Чтение / Запись |
| GtkSpinButtonUpdatePolicy | update-policy | Чтение / Запись |
| double | value | Чтение / Запись |
| gboolean | wrap | Чтение / Запись |
Стилизованные свойства
| GtkShadowType | shadow-type | Чтение |
Сигналы
| void | change-value | Действие |
| int | input | Выполнять последним |
| gboolean | output | Выполнять последним |
| void | value-changed | Выполнять последним |
| void | wrapped | Выполнять последним |
Типы и значения
| struct | GtkSpinButton |
| enum | GtkSpinButtonUpdatePolicy |
| enum | GtkSpinType |
| #define | GTK_INPUT_ERROR |
Реализованные интерфейсы
GtkSpinButton реализует AtkImplementorIface, GtkBuildable, GtkEditable, GtkCellEditable и GtkOrientable.
Файлы заголовков
#include <gtk/gtk.h>
Описание
GtkSpinButton — идеальный способ позволить пользователю установить значение некоторого атрибута. Вместо того, чтобы вводить число непосредственно в GtkEntry, GtkSpinButton позволяет пользователю щелкнуть по одной из двух стрелок, чтобы увеличить или уменьшить отображаемое значение. Значение все еще можно ввести, с дополнительным преимуществом проверки на соответствие заданному диапазону.
Основные свойства GtkSpinButton связаны с настройкой. Смотрите раздел GtkAdjustment для получения дополнительной информации о свойствах настройки. Обратите внимание, что GtkSpinButton по умолчанию сделает свою запись достаточно большой, чтобы вместить нижние и верхние границы настройки, что может привести к неожиданным результатам. Лучшей практикой является установка как свойства “width-chars”, так и “max-width-chars” в желаемое число символов для отображения в поле ввода.
CSS узлы
Основной CSS узел GtkSpinButton имеет имя spinbutton. Он создает дочерние узлы для поля ввода и двух кнопок с этими именами. Узлы кнопок имеют классы стилей .up и .down. Дочерние узлы GtkEntry (если они есть) размещаются под узлом поля ввода. Ориентация спин-кнопки отражается в классе стилей .vertical или .horizontal на главном узле.
Использование GtkSpinButton для получения целого числа
Использование GtkSpinButton для получения значения с плавающей запятой
Функции
gtk_spin_button_configure ()
void gtk_spin_button_configure (GtkSpinButton *spin_button,GtkAdjustment *adjustment,gdouble climb_rate,guint digits);
Изменяет свойства существующей кнопки спин-ввода. Соответственно обновляются настройки, шаг изменения, и количество знаков после запятой.
Параметры
spin_button | кнопка спин-ввода GtkSpinButton | |
adjustment | объект GtkAdjustment, который заменит существующую настройку, или | [nullable] |
climb_rate | новый шаг изменения | |
digits | количество знаков после запятой, отображаемых в кнопке спин-ввода |
gtk_spin_button_new ()
GtkWidget * gtk_spin_button_new (GtkAdjustment *adjustment,gdouble 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 (gdouble min,gdouble max,gdouble 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);
Заменяет связанный с spin_button объект GtkAdjustment.
Параметры
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_set_increments ()
void gtk_spin_button_set_increments (GtkSpinButton *spin_button,gdouble step,gdouble page);
Устанавливает шаги изменения и страницы для спин-ввода. Это влияет на скорость изменения значения при активации стрелок кнопки спин-ввода.
Параметры
spin_button | кнопка спин-ввода GtkSpinButton | |
step | приращение, применяемое при нажатии одной кнопки. | |
page | приращение, применяемое при нажатии второй кнопки. |
gtk_spin_button_set_range ()
void gtk_spin_button_set_range (GtkSpinButton *spin_button,gdouble min,gdouble max);
Устанавливает минимальное и максимальное допустимые значения для spin_button.
Если текущее значение выходит за пределы этого диапазона, оно будет скорректировано в соответствии с диапазоном, в противном случае оно останется неизменным.
Параметры
spin_button | кнопка спин-ввода GtkSpinButton | |
min | минимальное допустимое значение | |
max | максимальное допустимое значение |
gtk_spin_button_get_value_as_int ()
gint
gtk_spin_button_get_value_as_int (GtkSpinButton *spin_button); Получить значение spin_button, представленное как целое число.
Параметры
spin_button | кнопка спин-ввода GtkSpinButton |
Возвращаемое значение
значение spin_button
gtk_spin_button_set_value ()
void gtk_spin_button_set_value (GtkSpinButton *spin_button,gdouble value);
Устанавливает значение spin_button.
Параметры
spin_button | кнопка спин-ввода GtkSpinButton | |
value | новое значение |
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_set_numeric ()
void gtk_spin_button_set_numeric (GtkSpinButton *spin_button,gboolean numeric);
Устанавливает флаг, определяющий, можно ли вводить нечисловые символы в спин-кнопку.
Параметры
spin_button | ||
numeric | флаг, указывающий, разрешено ли только числовое ввод |
gtk_spin_button_spin ()
void gtk_spin_button_spin (GtkSpinButton *spin_button,GtkSpinType direction,gdouble increment);
Увеличивает или уменьшает значение спин-кнопки в указанном направлении на указанное количество.
Параметры
spin_button | ||
direction | значение GtkSpinType, указывающее направление вращения | |
increment | шаг увеличения, применяемый в указанном направлении |
gtk_spin_button_set_wrap ()
void gtk_spin_button_set_wrap (GtkSpinButton *spin_button,gboolean wrap);
Устанавливает флаг, определяющий, будет ли значение спин-кнопки циклически переходить к противоположному пределу при превышении верхнего или нижнего предела диапазона.
Параметры
spin_button | ||
wrap | флаг, указывающий, выполняется ли поведение перематывания |
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_update ()
void
gtk_spin_button_update (GtkSpinButton *spin_button); Принудительно обновить спин-кнопку.
Параметры
spin_button |
gtk_spin_button_get_digits ()
guint
gtk_spin_button_get_digits (GtkSpinButton *spin_button); Извлекает точность spin_button. См. gtk_spin_button_set_digits().
Параметры
spin_button |
Возвращает
текущую точность
gtk_spin_button_get_increments ()
void gtk_spin_button_get_increments (GtkSpinButton *spin_button,gdouble *step,gdouble *page);
Получает текущие шаги и страницы приращений, используемых spin_button. См. gtk_spin_button_set_increments().
Параметры
spin_button | ||
step | место для хранения приращения шага или | [out][allow-none] |
page | место для хранения приращения страницы или | [out][allow-none] |
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_get_range ()
void gtk_spin_button_get_range (GtkSpinButton *spin_button,gdouble *min,gdouble *max);
Получает диапазон допустимых значений для spin_button. См. gtk_spin_button_set_range().
Параметры
spin_button | ||
min | место для хранения минимального допустимого значения, или | [out][allow-none] |
max | место для хранения максимального допустимого значения, или | [out][allow-none] |
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_get_update_policy ()
GtkSpinButtonUpdatePolicy
gtk_spin_button_get_update_policy (GtkSpinButton *spin_button); Получает поведение обновления спин-кнопки. См. gtk_spin_button_set_update_policy().
Параметры
spin_button |
Возвращает
текущую политику обновления
gtk_spin_button_get_value ()
gdouble
gtk_spin_button_get_value (GtkSpinButton *spin_button); Получает значение в spin_button.
Параметры
spin_button |
Возвращает
значение spin_button
gtk_spin_button_get_wrap ()
gboolean
gtk_spin_button_get_wrap (GtkSpinButton *spin_button); Возвращает, обходит ли значение спин-кнопки противоположный предел при превышении верхнего или нижнего предела диапазона. См. gtk_spin_button_set_wrap().
Параметры
spin_button |
Возвращает
TRUE если спин-кнопка обходит пределы
Типы и значения
struct GtkSpinButton
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
Подробности свойств стиля
Свойство стиля “shadow-type”
“shadow-type” GtkShadowType
Стиль фаски вокруг спин-кнопки.
GtkSpinButton:shadow-type устарел с версии 3.20 и не должен использоваться в новом коде.
Используйте CSS для определения стиля границы; значение этого свойства стиля игнорируется.
Владелец: GtkSpinButton
Флаги: Чтение
Значение по умолчанию: GTK_SHADOW_IN
Подробное описание сигналов
Сигнал “change-value”
void user_function (GtkSpinButton *spin_button, GtkScrollType scroll, gpointer user_data)
Сигнал ::change-value — это сигнал переназначения клавиш, который генерируется, когда пользователь инициирует изменение значения.
Приложения не должны подключаться к нему, но могут генерировать его с g_signal_emit_by_name() в случае необходимости программного управления курсором.
По умолчанию для этого сигнала назначены клавиши вверх/вниз и PageUp/PageDown.
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
scroll | GtkScrollType, определяющий скорость и величину изменения | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Action
Сигнал “input”
int user_function (GtkSpinButton *spin_button, gpointer new_value, gpointer user_data)
Сигнал ::input используется для влияния на преобразование пользовательского ввода в двойное значение. Обработчик сигнала должен использовать gtk_entry_get_text() для получения текста из поля ввода и установить new_value в новое значение.
По умолчанию используется преобразование g_strtod().
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
new_value | место для возврата нового значения. | [out][type double] |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE для успешного преобразования, FALSE если ввод не обработан, и GTK_INPUT_ERROR в случае неудачи преобразования.
Флаги: Run Last
Сигнал “output”
gboolean user_function (GtkSpinButton *spin_button, gpointer user_data)
Сигнал ::output используется для изменения формата отображаемого значения в поле ввода спин-бутона.
spinbutton.horizontal ├── undershoot.left ├── undershoot.right ├── entry │ ╰── ... ├── button.down ╰── button.up
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Возвращаемое значение
TRUE если значение было отображено
Флаги: Run Last
Сигнал “value-changed”
void user_function (GtkSpinButton *spin_button, gpointer user_data)
Сигнал ::value-changed генерируется при изменении значения, представленного spinbutton. Также см. сигнал “output”.
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Run Last
Сигнал “wrapped”
void user_function (GtkSpinButton *spin_button, gpointer user_data)
Сигнал ::wrapped генерируется сразу после того, как спин-бутон переходит от максимального к минимальному значению или наоборот.
Параметры
spin_button | объект, на котором был сгенерирован сигнал | |
user_data | данные пользователя, установленные при подключении обработчика сигнала. |
Флаги: Run Last
С: 2.10
См. также
© 2005–2020 The GNOME Project
Licensed under the GNU Lesser General Public License version 2.1 or later.
https://developer.gnome.org/gtk3/3.24/GtkSpinButton.html