GTK+ Reference Manual |
||||
---|---|---|---|---|
Top | Description | Object Hierarchy | Properties | Style Properties | Signals |
GtkScrolledWindowGtkScrolledWindow Добавляет полосы прокрутки к своему дочернему виджету |
#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
для регулировок, что заставит окно прокручивания создать их для вас.
|
Горизонтальная регулировка. |
|
Вертикальная регулировка. |
Возвращает : |
Новое окно прокручивания. |
GtkAdjustment* gtk_scrolled_window_get_hadjustment
(GtkScrolledWindow *scrolled_window);
Возвращает настройку горизонтальной полосы прокручивания, используется для подключения горизонтальной полосы прокручивания к дочернему виджету с функциональностью горизонтальной прокрутки.
|
|
Возвращает : |
Горизонтальный GtkAdjustment. |
GtkAdjustment* gtk_scrolled_window_get_vadjustment
(GtkScrolledWindow *scrolled_window);
Возвращает настройку вертикальной полосы прокручивания, используется для подключения вертикальной полосы прокручивание к дочернему виджету с вертикальной функциональностью прокручивания.
|
|
Возвращает : |
Вертикальный GtkAdjustment. |
GtkWidget* gtk_scrolled_window_get_hscrollbar
(GtkScrolledWindow *scrolled_window);
Возвращает горизонтальную полосу
прокручивания scrolled_window
.
|
|
Возвращает : |
Горизонтальная полоса прокручивания
окна, или |
Начиная с версии 2.8
GtkWidget* gtk_scrolled_window_get_vscrollbar
(GtkScrolledWindow *scrolled_window);
Возвращает вертикальную полосу
прокручивания scrolled_window
.
|
|
Возвращает : |
Вертикальная полоса прокручивания
окна, или |
Начиная с версии 2.8
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
,
полоса прокрутки отображается по
необходимости (то есть когда часть
отображаемого больше чем область
просмотра).
|
|
|
Политика для горизонтальной полосы. |
|
Политика для вертикальной полосы. |
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 не ноль, то есть была заполнена существующим идентификатором сигнала.
|
|
|
Виджет который вы хотите прокручивать. |
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
.
|
|
|
Позиция дочернего окна. |
void gtk_scrolled_window_unset_placement
(GtkScrolledWindow *scrolled_window);
Отменяет установку контекста размещения относительно полос прокручивания в прокручиваемом окне. Если никакого размещения не установлено для прокручиваемого окна, руководствуется "gtk-scrolled-window-placement" XSETTING.
Смотрите также gtk_scrolled_window_set_placement()
и gtk_scrolled_window_get_placement()
.
|
Начиная с версии 2.10
void gtk_scrolled_window_set_shadow_type
(GtkScrolledWindow *scrolled_window,
GtkShadowType type);
Изменяет тип тени рисуемой вокруг
содержимого scrolled_window
.
|
|
|
Класс тени рисуемой вокруг содержимого прокручиваемого окна |
void gtk_scrolled_window_set_hadjustment
(GtkScrolledWindow *scrolled_window,
GtkAdjustment *hadjustment);
Устанавливает GtkAdjustment для горизонтальной полосы прокручивания.
|
|
|
Горизонтальная регулировка прокручивания. |
void gtk_scrolled_window_set_vadjustment
(GtkScrolledWindow *scrolled_window,
GtkAdjustment *vadjustment);
Устанавливает GtkAdjustment для вертикальной полосы прокручивания.
|
|
|
Вертикальная регулировка прокручивания. |
GtkCornerType gtk_scrolled_window_get_placement
(GtkScrolledWindow *scrolled_window);
Получает размещение содержимого
относительно полос прокручивания для
прокручиваемого окна. Смотрите
gtk_scrolled_window_set_placement()
.
|
|
Возвращает : |
Текущее значение размещения. Смотрите
также |
void gtk_scrolled_window_get_policy (GtkScrolledWindow *scrolled_window,
GtkPolicyType *hscrollbar_policy,
GtkPolicyType *vscrollbar_policy);
Возвращает текущеме значение политики
для горизонтальной и вертикальной
полосы прокручивания. Смотрите
gtk_scrolled_window_set_policy()
.
|
|
|
Размещение сохраняемой политики
для горизонтальной полосы прокручивания,
или |
|
Размещение сохраняемой политики
для вертикальной полосы прокручивания,
или |
GtkShadowType gtk_scrolled_window_get_shadow_type
(GtkScrolledWindow *scrolled_window);
Получает тип тени прокручиваемого окна.
Смотрите gtk_scrolled_window_set_shadow_type()
.
|
|
Возвращает : |
Текущий тип тени |
hadjustment
""hadjustment" GtkAdjustment : Read / Write / ConstructGtkAdjustment для горизонтальной позиции.
Свойство "
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 / ConstructGtkAdjustment для вертикальной позиции.
Свойство "
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
|
Объект получающий сигнал. |
|
|
|
Пользовательские данные устанавливаемые при подключении обработчика сигнала. |
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.)