кнопки "карусели"(spin buttons)кнопки "карусели" используются для пошагового изменения определенного значения в любом направлении, это похоже на прокручивание. этот виджет выглядит как две кнопки со стрелками расположенные друг над другом, обычно он располагается сбоку в виджете ввода текста. нажатие на одну из этих кнопок приводит к прокручиванию значений в ту или в другую сторону. при этом строка ввода может уже содержать определенное значение. кнопка "карусель" может иметь изначально нулевое или десятичное значение и выполнять пошаговое увеличение или уменьшение. удержание одной из кнопок в нажатом состоянии приводит к ускоренному изменению значения, в зависимости от времени удержания. кнопки "карусели" используют adjustment объекты для содержания информации о возможных значениях регулирования. это делает данный виджет более мощным в использовании. вспомните что adjustment widget создаются с помощью функции которая содержит следующую информацию:
эти атрибуты регулирования используются кнопками "карусель" следующим образом:
дополнительно можно использовать кнопку-3 мыши для перехода сразу к высшему или низшему значению регулировок, в зависимости от выбранной кнопки. создание новой кнопки "карусель":
аргумент climb_rate должен иметь значение между 0.0 и 1.0 и показывает степень ускорения прокручивания. аргумент digits определяет кол-во цифр после запятой в десятичных значениях. кнопку "карусель" можно переконфигурировать после создания с помощью следующей функции:
аргумент spin_button определяет что кнопка "карусель" должна быть переконфигурирована. другие аргументы несут новые значения. регулировки могут быть установлены с помощью двух функций:
кол-во цифр после запятой в десятичных значениях тоже может быть изменено:
текущее значение можно изменять с помощью:
определить текущее значение, десятичное или целое, можно при помощи следующих двух функций:
если вы хотите изменить значение кнопки по отношению к текущему значению, то используйте следующую функцию:
параметр direction может принимать одно из этих значений:
эта функция упаковывается в значительное количество выполняемых функций, которые я попытаюсь объяснить. многие настройки используемые объектом регулировки (adjustment object) связаны с кнопкой "карусель". gtk_spin_step_forward и gtk_spin_step_backward изменяет значение кнопки "карусель" количеством, определенным приращением, если приращение не равно 0, когда значение изменено значением step_increment в adjustment. gtk_spin_page_forward и gtk_spin_page_backward просто изменяет значение кнопки "карусель" приращением (increment). gtk_spin_home устанавливает значение в основание регулятора диапазона. gtk_spin_end устанавливает значение к вершине регулятора диапазона. gtk_spin_user_defined просто изменяет значение указанным количеством. мы закончили с рассмотрением функций отвечающих за установки и определения признаков кнопок "карусель" и переходим к функциям непосредственного создания виджета кнопка "карусель". первая функция ограничивает поле кнопки "карусель" так, чтобы оно могло содержать только числовое значение. это не позволяет пользователю печатать ничего кроме цифр в данном поле:
следующая функция определяет возможность кругового изменения значения, когда по достижению верхнего или нижнего значения, изменение продолжается с противоположного конца:
вы можете установить приблизительное значение к самому близкому step_increment, который установлен в пределах объекта регулирования, используемого с кнопкой "карусель":
политика обновления для кнопки "карусель" (spin button) может быть определена с помощью функции:
возможные значения аргумента policy gtk_update_always или gtk_update_if_valid. эта политика затрагивает поведение кнопки "карусель", анализируя вставленный текст и синхронизируя его значение со значениями настройки (adjustment). в случае gtk_update_if_valid если текстовый ввод изменен - числовое значение находится в диапазоне регулирования. иначе текст сбрасывается к текущему значению. в случае gtk_update_always мы игнорируем ошибки, преобразовывая текст в числовое значение. наконец вы можете непосредственно обновлять кнопку "карусель":
пример:
|