GtkLayoutManager

说明 [src]

abstract class Gtk.LayoutManager : GObject.Object
{
  /* No available fields */
}

布局管理器是代理类,用于处理首选大小和 widget 的分配。

通常,如果您想为 widget 的子项实现布局策略,或者想根据其内容确定 widget 的大小,您会将 GtkLayoutManager 子类化。

每个 GtkWidget 在任何给定的时间只能有一个与之关联的 GtkLayoutManager 实例;不过,可以使用 gtk_widget_set_layout_manager() 替换布局管理器 实例。

布局属性

布局管理器可以通过创建派生自 GtkLayoutChild 的对象类型并在其上安装属性作为普通 GObject 属性,公开用于控制每个子项的布局的属性。

用于存储特定子项的布局属性的每个 GtkLayoutChild 实例都是通过 gtk_layout_manager_get_layout_child() 方法创建的;GtkLayoutManager 通过覆盖 GtkLayoutManagerClass.create_layout_child() 虚拟函数来控制其 GtkLayoutChild 实例的创建。典型的实现应如下所示

static GtkLayoutChild *
create_layout_child (GtkLayoutManager *manager,
                     GtkWidget        *container,
                     GtkWidget        *child)
{
  return g_object_new (your_layout_child_get_type (),
                       "layout-manager", manager,
                       "child-widget", child,
                       NULL);
}

新创建的 GtkLayoutChild 实例上的 GtkLayoutChild:layout-managerGtkLayoutChild:child-widget 属性是必需的。GtkLayoutManager 将缓存新创建的 GtkLayoutChild 实例,直到 widget 从其父项中移除,或父项移除布局管理器。

每个创建 GtkLayoutChildGtkLayoutManager 实例都应在每次需要查询布局属性时使用 gtk_layout_manager_get_layout_child();每次更新属性时,每个 GtkLayoutChild 实例都应调用 gtk_layout_manager_layout_changed(),以便对新的尺寸测算和分配进行排队。

层级

hierarchy this GtkLayoutManager ancestor_0 GObject ancestor_0--this

祖先

实例方法

gtk_layout_manager_allocate

widget 指定宽度、高度和基准线,并使用 manager 的布局管理策略计算 widget 的子项的位置和大小。

gtk_layout_manager_get_layout_child

GtkLayoutManager 检索 GtkLayoutChild 实例,必要时则创建一个实例。

gtk_layout_manager_get_request_mode

检索 manager 的请求模式。

gtk_layout_manager_get_widget

检索使用给定 GtkLayoutManagerGtkWidget

gtk_layout_manager_layout_changed

在使用 managerGtkWidget 上排队调整大小,如果存在的话。

gtk_layout_manager_measure

使用 manager 测量 widget 的大小,用于给定的方向和大小。

GObject 继承的方法 (43)

请参阅 GObject,以获取完整的方法列表。

信号

GObject 继承的信号 (1)
GObject::notify

当某个对象的某个属性通过 g_object_set_property()、g_object_set()、等方式设置值时,该 `notify` 信号会发出。

类结构

struct GtkLayoutManagerClass {
  GtkSizeRequestMode (* get_request_mode) (
    GtkLayoutManager* manager,
    GtkWidget* widget
  );
  void (* measure) (
    GtkLayoutManager* manager,
    GtkWidget* widget,
    GtkOrientation orientation,
    int for_size,
    int* minimum,
    int* natural,
    int* minimum_baseline,
    int* natural_baseline
  );
  void (* allocate) (
    GtkLayoutManager* manager,
    GtkWidget* widget,
    int width,
    int height,
    int baseline
  );
  GType layout_child_type;
  GtkLayoutChild* (* create_layout_child) (
    GtkLayoutManager* manager,
    GtkWidget* widget,
    GtkWidget* for_child
  );
  void (* root) (
    GtkLayoutManager* manager
  );
  void (* unroot) (
    GtkLayoutManager* manager
  );
  
}

GtkLayoutManagerClass 结构仅包含私有数据,仅应通过提供的 API 或子类化 GtkLayoutManager 时访问。

类成员
get_request_mode: GtkSizeRequestMode (* get_request_mode) ( GtkLayoutManager* manager, GtkWidget* widget )

一个虚拟函数,用于返回布局管理器的首选请求模式;例如,“宽高比”或“高宽比”;参见 GtkSizeRequestMode

measure: void (* measure) ( GtkLayoutManager* manager, GtkWidget* widget, GtkOrientation orientation, int for_size, int* minimum, int* natural, int* minimum_baseline, int* natural_baseline )

一个虚拟函数,用于为给定方向使用布局管理器测量小部件的最小尺寸和首选尺寸。

allocate: void (* allocate) ( GtkLayoutManager* manager, GtkWidget* widget, int width, int height, int baseline )

一个虚拟函数,用于使用布局管理器分配小部件的大小。

layout_child_type: GType

此布局管理器使用的 GtkLayoutChild 的类型。

create_layout_child: GtkLayoutChild* (* create_layout_child) ( GtkLayoutManager* manager, GtkWidget* widget, GtkWidget* for_child )

一个虚拟函数,用于为布局属性创建一个 GtkLayoutChild 元对象。

root: void (* root) ( GtkLayoutManager* manager )

一个虚拟函数,当使用布局管理器的窗口小部件依附到 GtkRoot 时调用。

unroot: void (* unroot) ( GtkLayoutManager* manager )

一个虚拟函数,当使用布局管理器的窗口小部件与 GtkRoot 分离时调用。

虚拟方法

Gtk.LayoutManagerClass.allocate

widget 指定宽度、高度和基准线,并使用 manager 的布局管理策略计算 widget 的子项的位置和大小。

Gtk.LayoutManagerClass.create_layout_child

为给定的 for_child 窗口小部件创建一个 GtkLayoutChild 实例。

Gtk.LayoutManagerClass.get_request_mode

一个虚拟函数,用于返回布局管理器的首选请求模式;例如,“宽高比”或“高宽比”;参见 GtkSizeRequestMode

Gtk.LayoutManagerClass.measure

使用 manager 测量 widget 的大小,用于给定的方向和大小。

Gtk.LayoutManagerClass.root

一个虚拟函数,当使用布局管理器的窗口小部件依附到 GtkRoot 时调用。

Gtk.LayoutManagerClass.unroot

一个虚拟函数,当使用布局管理器的窗口小部件与 GtkRoot 分离时调用。