краткий обзор#include <gtk/gtk.h> gtkscrolledwindow; gtkwidget* gtk_scrolled_window_new (gtkadjustment *hadjustment, gtkadjustment *vadjustment); gtkadjustment* gtk_scrolled_window_get_hadjustment (gtkscrolledwindow *scrolled_window); gtkadjustment* gtk_scrolled_window_get_vadjustment (gtkscrolledwindow *scrolled_window); gtkwidget* gtk_scrolled_window_get_hscrollbar (gtkscrolledwindow *scrolled_window); gtkwidget* gtk_scrolled_window_get_vscrollbar (gtkscrolledwindow *scrolled_window); void gtk_scrolled_window_set_policy (gtkscrolledwindow *scrolled_window, gtkpolicytype hscrollbar_policy, gtkpolicytype vscrollbar_policy); void gtk_scrolled_window_add_with_viewport (gtkscrolledwindow *scrolled_window, gtkwidget *child); void gtk_scrolled_window_set_placement (gtkscrolledwindow *scrolled_window, gtkcornertype window_placement); void gtk_scrolled_window_unset_placement (gtkscrolledwindow *scrolled_window); void gtk_scrolled_window_set_shadow_type (gtkscrolledwindow *scrolled_window, gtkshadowtype type); void gtk_scrolled_window_set_hadjustment (gtkscrolledwindow *scrolled_window, gtkadjustment *hadjustment); void gtk_scrolled_window_set_vadjustment (gtkscrolledwindow *scrolled_window, gtkadjustment *vadjustment); gtkcornertype gtk_scrolled_window_get_placement (gtkscrolledwindow *scrolled_window); void gtk_scrolled_window_get_policy (gtkscrolledwindow *scrolled_window, gtkpolicytype *hscrollbar_policy, gtkpolicytype *vscrollbar_policy); gtkshadowtype gtk_scrolled_window_get_shadow_type (gtkscrolledwindow *scrolled_window); иерархия объектовgobject +----ginitiallyunowned +----gtkobject +----gtkwidget +----gtkcontainer +----gtkbin +----gtkscrolledwindow осуществляемый интерфейсgtkscrolledwindow осуществляет atkimplementoriface. свойства"hadjustment" gtkadjustment : read / write / construct "hscrollbar-policy" gtkpolicytype : read / write "shadow-type" gtkshadowtype : read / write "vadjustment" gtkadjustment : read / write / construct "vscrollbar-policy" gtkpolicytype : read / write "window-placement" gtkcornertype : read / write "window-placement-set" gboolean : read / write свойства стиля"scrollbar-spacing" gint : read сигналы"move-focus-out" void user_function (gtkscrolledwindow *scrolledwindow, gtkdirectiontype *arg1, gpointer user_data) : run last / action "scroll-child" void user_function (gtkscrolledwindow *scrolledwindow, gtkscrolltype *arg1, gboolean arg2, gpointer user_data) : run last / action описаниеgtkscrolledwindow это подкласс gtkbin: этот контейнер принимает один дочерний виджет. gtkscrolledwindow добавляет полосы прокрутки к дочернему виджету и опционально рисует скошенную рамку вокруг дочернего виджета. прокручиваемое окно может работать в двух направлениях. некоторые виджеты уже имеют свою поддержку прокручивания; эти виджеты имеют ''слоты'' ("slots") для объектов gtkadjustment. [5] виджеты, изначально поддерживающие прокрутку (native scroll support), включают gtktreeview, gtktextview, и gtklayout. для виджетов не имеющих изначально поддержки прокручивания, виджет gtkviewport действует как адаптирующий класс осуществления прокрутки. используйте gtkviewport для прокручивания дочерних виджетов таких как gtktable, gtkbox, и так далее. если виджет имеет изначальные
возможности прокручивания, он может
быть добавлен к gtkscrolledwindow
с помощью позиция полосы прокручивания контролируется настройками прокручивания. смотрите gtkadjustment для полей регулировок - для gtkscrollbar, используемого gtkscrolledwindow, поле "value" представляет позицию полосы прокрутки, которое должно быть между полем "lower" и "upper - page_size." поле "page_size" размер видимой прокручиваемой области. поля "step_increment" и "page_increment" используются когда пользователь запрашивает пошаговое прокручивание (используя небольшие пошаговые стрелки) или переход в конец страницы (используя например клавишу pagedown). если gtkscrolledwindow ведёт себя не так как вам нужно, или имеет неправильное расположение, возможно установить вашу собственную прокрутку с gtkscrollbar например gtktable. деталиgtkscrolledwindowtypedef struct {
gtkwidget *hscrollbar;
gtkwidget *vscrollbar;
} gtkscrolledwindow; поля структуры gtkscrolledwindow не являются общими; они должны использоваться толь функциями приведёнными ниже. gtk_scrolled_window_new ()gtkwidget* gtk_scrolled_window_new (gtkadjustment *hadjustment, gtkadjustment *vadjustment);
создаёт новое прокручиваемое окно. два
аргумента являются настройками окна
прокручивания; они будут общими для
полос прокручивания и дочернего виджета
сохраняя синхронизацию. обычно вы можете
поместить
gtk_scrolled_window_get_hadjustment ()gtkadjustment* gtk_scrolled_window_get_hadjustment (gtkscrolledwindow *scrolled_window); возвращает настройку горизонтальной полосы прокручивания, используется для подключения горизонтальной полосы прокручивания к дочернему виджету с функциональностью горизонтальной прокрутки.
gtk_scrolled_window_get_vadjustment ()gtkadjustment* gtk_scrolled_window_get_vadjustment (gtkscrolledwindow *scrolled_window); возвращает настройку вертикальной полосы прокручивания, используется для подключения вертикальной полосы прокручивание к дочернему виджету с вертикальной функциональностью прокручивания.
gtk_scrolled_window_get_hscrollbar ()gtkwidget* gtk_scrolled_window_get_hscrollbar (gtkscrolledwindow *scrolled_window);
возвращает горизонтальную полосу
прокручивания
начиная с версии 2.8 gtk_scrolled_window_get_vscrollbar ()gtkwidget* gtk_scrolled_window_get_vscrollbar (gtkscrolledwindow *scrolled_window);
возвращает вертикальную полосу
прокручивания
начиная с версии 2.8 gtk_scrolled_window_set_policy ()void gtk_scrolled_window_set_policy (gtkscrolledwindow *scrolled_window, gtkpolicytype hscrollbar_policy, gtkpolicytype vscrollbar_policy);
устанавливает политику прокручивания
для горизонтальных и вертикальных полос
прокручивания. политика определяет
когда полоса прокручивания должна
появляться; это значение из перечисления
gtkpolicytype.
если
gtk_scrolled_window_add_with_viewport ()void gtk_scrolled_window_add_with_viewport (gtkscrolledwindow *scrolled_window, gtkwidget *child);
используется для добавления дочерних
виджетов с отсутствием изначальной
поддержки прокручивания. это простая
функция удобства; она эквивалентна
добавлению не прокручиваемого дочернего
виджета к области просмотра, после чего
область просмотра (viewport) добавляется к
прокручиваемому окну. если дочерний
виджет имеет встроенное прокручивание,
используйте область просмотра прокручивает дочерний виджет перемещением его gdkwindow, и берет размер дочернего виджета как размер его вышестоящего gdkwindow. это очень неправильно для большинства виджетов поддерживающих встроенное прокручивание; например, если вы добавили виджет, такой как gtktreeview, к области просмотра, весь виджет будет прокручен, включая заголовки столбцов. поэтому, виджеты с встроенной поддержкой прокручивания не должны использовать gtkviewport полномочия. виджет поддерживает прокручивание изначально если поле set_scroll_adjustments_signal в gtkwidgetclass не ноль, то есть была заполнена существующим идентификатором сигнала.
gtk_scrolled_window_set_placement ()void gtk_scrolled_window_set_placement (gtkscrolledwindow *scrolled_window, gtkcornertype window_placement); устанавливает размещение контекста относительно полос прокручивания для прокручиваемого окна. смотрите также определяет положение дочернего виджета
относительно полос прокручивания. по
умолчанию
gtk_scrolled_window_unset_placement ()void gtk_scrolled_window_unset_placement (gtkscrolledwindow *scrolled_window); отменяет установку контекста размещения относительно полос прокручивания в прокручиваемом окне. если никакого размещения не установлено для прокручиваемого окна, руководствуется "gtk-scrolled-window-placement" xsetting. смотрите также
начиная с версии 2.10 gtk_scrolled_window_set_shadow_type ()void gtk_scrolled_window_set_shadow_type (gtkscrolledwindow *scrolled_window, gtkshadowtype type);
изменяет тип тени рисуемой вокруг
содержимого
gtk_scrolled_window_set_hadjustment ()void gtk_scrolled_window_set_hadjustment (gtkscrolledwindow *scrolled_window, gtkadjustment *hadjustment); устанавливает gtkadjustment для горизонтальной полосы прокручивания.
gtk_scrolled_window_set_vadjustment ()void gtk_scrolled_window_set_vadjustment (gtkscrolledwindow *scrolled_window, gtkadjustment *vadjustment); устанавливает gtkadjustment для вертикальной полосы прокручивания.
gtk_scrolled_window_get_placement ()gtkcornertype gtk_scrolled_window_get_placement (gtkscrolledwindow *scrolled_window);
получает размещение содержимого
относительно полос прокручивания для
прокручиваемого окна. смотрите
gtk_scrolled_window_get_policy ()void gtk_scrolled_window_get_policy (gtkscrolledwindow *scrolled_window, gtkpolicytype *hscrollbar_policy, gtkpolicytype *vscrollbar_policy);
возвращает текущеме значение политики
для горизонтальной и вертикальной
полосы прокручивания. смотрите
gtk_scrolled_window_get_shadow_type ()gtkshadowtype gtk_scrolled_window_get_shadow_type (gtkscrolledwindow *scrolled_window);
получает тип тени прокручиваемого окна.
смотрите
детали свойствсвойство "
|
|
объект получающий сигнал. |
|
|
|
пользовательские данные устанавливаемые при подключении обработчика сигнала. |
void user_function (gtkscrolledwindow *scrolledwindow, gtkscrolltype *arg1, gboolean arg2, gpointer user_data) : run last / action
|
объект получающий сигнал. |
|
|
|
|
|
пользовательские данные устанавливаемые при подключении обработчика сигнала. |
gtkviewport, gtkadjustment, gtkwidgetclass
[5] прокручиваемое окно устанавливает gtkadjustment объекты в слоты дочерних виджетов используя set_scroll_adjustments_signal, найденный в gtkwidgetclass. (концептуально, эти виджеты осуществляют "scrollable" интерфейс; потому что gtk+ 1.2 недоставало интерфейса поддержки объектной системы, этот интерфейс плохо осуществим как сигнал в gtkwidgetclass. объектная система gtk+ 2.0 позволяла бы более чистое осуществление, но не стоило нарушать api.)