Prev

Up

Home

GTK+ Reference Manual

Next

Top  |  Description  |  Object Hierarchy  |  Properties  |  Style Properties  |  Signals

GtkScrolledWindow

GtkScrolledWindow Добавляет полосы прокрутки к своему дочернему виджету

Краткий обзор

#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 с помощью gtk_container_add(). Если возможности прокручивания у виджета нет, вы должны сначала добавить виджет к GtkViewport, затем добавить GtkViewport к прокручиваемому окну. Функция удобства gtk_scrolled_window_add_with_viewport() делает тоже самое, таким образом вы можете игнорировать присутствие области просмотра (viewport).

Позиция полосы прокручивания контролируется настройками прокручивания. Смотрите GtkAdjustment для полей регулировок - для GtkScrollbar, используемого GtkScrolledWindow, поле "value" представляет позицию полосы прокрутки, которое должно быть между полем "lower" и "upper - page_size." Поле "page_size" размер видимой прокручиваемой области. Поля "step_increment" и "page_increment" используются когда пользователь запрашивает пошаговое прокручивание (используя небольшие пошаговые стрелки) или переход в конец страницы (используя например клавишу PageDown).

Если GtkScrolledWindow ведёт себя не так как вам нужно, или имеет неправильное расположение, возможно установить вашу собственную прокрутку с GtkScrollbar например GtkTable.

Детали

GtkScrolledWindow

typedef struct { GtkWidget *hscrollbar; GtkWidget *vscrollbar; } GtkScrolledWindow;

Поля структуры GtkScrolledWindow не являются общими; они должны использоваться толь функциями приведёнными ниже.


gtk_scrolled_window_new ()

GtkWidget* gtk_scrolled_window_new (GtkAdjustment *hadjustment, GtkAdjustment *vadjustment);

Создаёт новое прокручиваемое окно. Два аргумента являются настройками окна прокручивания; они будут общими для полос прокручивания и дочернего виджета сохраняя синхронизацию. Обычно вы можете поместить NULL для регулировок, что заставит окно прокручивания создать их для вас.

hadjustment :

Горизонтальная регулировка.

vadjustment :

Вертикальная регулировка.

Возвращает :

Новое окно прокручивания.


gtk_scrolled_window_get_hadjustment ()

GtkAdjustment* gtk_scrolled_window_get_hadjustment (GtkScrolledWindow *scrolled_window);

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

scrolled_window :

GtkScrolledWindow.

Возвращает :

Горизонтальный GtkAdjustment.


gtk_scrolled_window_get_vadjustment ()

GtkAdjustment* gtk_scrolled_window_get_vadjustment (GtkScrolledWindow *scrolled_window);

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

scrolled_window :

GtkScrolledWindow.

Возвращает :

Вертикальный GtkAdjustment.


gtk_scrolled_window_get_hscrollbar ()

GtkWidget* gtk_scrolled_window_get_hscrollbar (GtkScrolledWindow *scrolled_window);

Возвращает горизонтальную полосу прокручивания scrolled_window.

scrolled_window :

GtkScrolledWindow

Возвращает :

Горизонтальная полоса прокручивания окна, или NULL если её нет.

Начиная с версии 2.8


gtk_scrolled_window_get_vscrollbar ()

GtkWidget* gtk_scrolled_window_get_vscrollbar (GtkScrolledWindow *scrolled_window);

Возвращает вертикальную полосу прокручивания scrolled_window.

scrolled_window :

GtkScrolledWindow

Возвращает :

Вертикальная полоса прокручивания окна, или NULL если её нет.

Начиная с версии 2.8


gtk_scrolled_window_set_policy ()

void gtk_scrolled_window_set_policy (GtkScrolledWindow *scrolled_window, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy);

Устанавливает политику прокручивания для горизонтальных и вертикальных полос прокручивания. Политика определяет когда полоса прокручивания должна появляться; это значение из перечисления GtkPolicyType. Если GTK_POLICY_ALWAYS, полоса прокрутки видима всегда; если GTK_POLICY_NEVER, полоса прокрутки никогда не показывается; если GTK_POLICY_AUTOMATIC, полоса прокрутки отображается по необходимости (то есть когда часть отображаемого больше чем область просмотра).

scrolled_window :

GtkScrolledWindow.

hscrollbar_policy :

Политика для горизонтальной полосы.

vscrollbar_policy :

Политика для вертикальной полосы.


gtk_scrolled_window_add_with_viewport ()

void gtk_scrolled_window_add_with_viewport (GtkScrolledWindow *scrolled_window, GtkWidget *child);

Используется для добавления дочерних виджетов с отсутствием изначальной поддержки прокручивания. Это простая функция удобства; она эквивалентна добавлению не прокручиваемого дочернего виджета к области просмотра, после чего область просмотра (viewport) добавляется к прокручиваемому окну. Если дочерний виджет имеет встроенное прокручивание, используйте gtk_container_add() вместо этой функции.

Область просмотра прокручивает дочерний виджет перемещением его GdkWindow, и берет размер дочернего виджета как размер его вышестоящего GdkWindow. Это очень неправильно для большинства виджетов поддерживающих встроенное прокручивание; например, если вы добавили виджет, такой как GtkTreeView, к области просмотра, весь виджет будет прокручен, включая заголовки столбцов. Поэтому, виджеты с встроенной поддержкой прокручивания не должны использовать GtkViewport полномочия.

Виджет поддерживает прокручивание изначально если поле set_scroll_adjustments_signal в GtkWidgetClass не ноль, то есть была заполнена существующим идентификатором сигнала.

scrolled_window :

GtkScrolledWindow.

child :

Виджет который вы хотите прокручивать.


gtk_scrolled_window_set_placement ()

void gtk_scrolled_window_set_placement (GtkScrolledWindow *scrolled_window, GtkCornerType window_placement);

Устанавливает размещение контекста относительно полос прокручивания для прокручиваемого окна.

Смотрите также gtk_scrolled_window_get_placement() и gtk_scrolled_window_unset_placement().

Определяет положение дочернего виджета относительно полос прокручивания. По умолчанию GTK_CORNER_TOP_LEFT, означает что дочерний виджет находится вверху слева, с полосой прокручивания снизу справа. Другими значениями GtkCornerType могут быть GTK_CORNER_TOP_RIGHT, GTK_CORNER_BOTTOM_LEFT и GTK_CORNER_BOTTOM_RIGHT.

scrolled_window :

GtkScrolledWindow

window_placement :

Позиция дочернего окна.


gtk_scrolled_window_unset_placement ()

void gtk_scrolled_window_unset_placement (GtkScrolledWindow *scrolled_window);

Отменяет установку контекста размещения относительно полос прокручивания в прокручиваемом окне. Если никакого размещения не установлено для прокручиваемого окна, руководствуется "gtk-scrolled-window-placement" XSETTING.

Смотрите также gtk_scrolled_window_set_placement() и gtk_scrolled_window_get_placement().

scrolled_window :

GtkScrolledWindow

Начиная с версии 2.10


gtk_scrolled_window_set_shadow_type ()

void gtk_scrolled_window_set_shadow_type (GtkScrolledWindow *scrolled_window, GtkShadowType type);

Изменяет тип тени рисуемой вокруг содержимого scrolled_window.

scrolled_window :

GtkScrolledWindow

type :

Класс тени рисуемой вокруг содержимого прокручиваемого окна


gtk_scrolled_window_set_hadjustment ()

void gtk_scrolled_window_set_hadjustment (GtkScrolledWindow *scrolled_window, GtkAdjustment *hadjustment);

Устанавливает GtkAdjustment для горизонтальной полосы прокручивания.

scrolled_window :

GtkScrolledWindow.

hadjustment :

Горизонтальная регулировка прокручивания.


gtk_scrolled_window_set_vadjustment ()

void gtk_scrolled_window_set_vadjustment (GtkScrolledWindow *scrolled_window, GtkAdjustment *vadjustment);

Устанавливает GtkAdjustment для вертикальной полосы прокручивания.

scrolled_window :

GtkScrolledWindow.

vadjustment :

Вертикальная регулировка прокручивания.


gtk_scrolled_window_get_placement ()

GtkCornerType gtk_scrolled_window_get_placement (GtkScrolledWindow *scrolled_window);

Получает размещение содержимого относительно полос прокручивания для прокручиваемого окна. Смотрите gtk_scrolled_window_set_placement().

scrolled_window :

GtkScrolledWindow

Возвращает :

Текущее значение размещения. Смотрите также gtk_scrolled_window_set_placement() и gtk_scrolled_window_unset_placement().


gtk_scrolled_window_get_policy ()

void gtk_scrolled_window_get_policy (GtkScrolledWindow *scrolled_window, GtkPolicyType *hscrollbar_policy, GtkPolicyType *vscrollbar_policy);

Возвращает текущеме значение политики для горизонтальной и вертикальной полосы прокручивания. Смотрите gtk_scrolled_window_set_policy().

scrolled_window :

GtkScrolledWindow

hscrollbar_policy :

Размещение сохраняемой политики для горизонтальной полосы прокручивания, или NULL.

vscrollbar_policy :

Размещение сохраняемой политики для вертикальной полосы прокручивания, или NULL.


gtk_scrolled_window_get_shadow_type ()

GtkShadowType gtk_scrolled_window_get_shadow_type (GtkScrolledWindow *scrolled_window);

Получает тип тени прокручиваемого окна. Смотрите gtk_scrolled_window_set_shadow_type().

scrolled_window :

GtkScrolledWindow

Возвращает :

Текущий тип тени

Детали свойств

Свойство "hadjustment"

  "hadjustment"          GtkAdjustment         : Read / Write / Construct

GtkAdjustment для горизонтальной позиции.


Свойство "hscrollbar-policy"

  "hscrollbar-policy"    GtkPolicyType         : Read / Write

Когда отображается горизонтальная полоса прокручивания.

Значение по умолчанию: GTK_POLICY_ALWAYS


Свойство "shadow-type"

  "shadow-type"          GtkShadowType         : Read / Write

Стиль скоса вокруг содержимого.

Значение по умолчанию: GTK_SHADOW_NONE


Свойство "vadjustment"

  "vadjustment"          GtkAdjustment         : Read / Write / Construct

GtkAdjustment для вертикальной позиции.


Свойство "vscrollbar-policy"

  "vscrollbar-policy"    GtkPolicyType         : Read / Write

Когда отображается вертикальная полоса прокручивания.

Значение по умолчанию: GTK_POLICY_ALWAYS


Свойство "window-placement"

  "window-placement"     GtkCornerType         : Read / Write

Где располагается содержимое относительно полос прокручивания. Это свойство имеет эффект только если "window-placement-set" равно TRUE.

Значение по умолчанию: GTK_CORNER_TOP_LEFT


Свойство "window-placement-set"

  "window-placement-set" gboolean              : Read / Write

Должно ли использоваться "window-placement" для определения расположения содержимого относительно полос прокручивания.

Значение по умолчанию: FALSE

Детали свойств стиля

Свойство "scrollbar-spacing"

  "scrollbar-spacing"    gint                  : Read

Количество пикселей между полосами прокручивания и прокручиваемым окном.

Допустимые значения: >= 0

Значение по умолчанию: 3

Детали сигналов

Сигнал "move-focus-out"

void user_function (GtkScrolledWindow *scrolledwindow, GtkDirectionType *arg1, gpointer user_data) : Run last / Action

scrolledwindow :

Объект получающий сигнал.

arg1 :

user_data :

Пользовательские данные устанавливаемые при подключении обработчика сигнала.


Сигнал "scroll-child"

void user_function (GtkScrolledWindow *scrolledwindow, GtkScrollType *arg1, gboolean arg2, gpointer user_data) : Run last / Action

scrolledwindow :

Объект получающий сигнал.

arg1 :

arg2 :

user_data :

Пользовательские данные устанавливаемые при подключении обработчика сигнала.

Смотрите также

GtkViewport, GtkAdjustment, GtkWidgetClass



[5] Прокручиваемое окно устанавливает GtkAdjustment объекты в слоты дочерних виджетов используя set_scroll_adjustments_signal, найденный в GtkWidgetClass. (Концептуально, эти виджеты осуществляют "Scrollable" интерфейс; потому что GTK+ 1.2 недоставало интерфейса поддержки объектной системы, этот интерфейс плохо осуществим как сигнал в GtkWidgetClass. Объектная система GTK+ 2.0 позволяла бы более чистое осуществление, но не стоило нарушать API.)