类
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-manager
和 GtkLayoutChild:child-widget
属性是必需的。GtkLayoutManager
将缓存新创建的 GtkLayoutChild
实例,直到 widget 从其父项中移除,或父项移除布局管理器。
每个创建 GtkLayoutChild
的 GtkLayoutManager
实例都应在每次需要查询布局属性时使用 gtk_layout_manager_get_layout_child()
;每次更新属性时,每个 GtkLayoutChild
实例都应调用 gtk_layout_manager_layout_changed()
,以便对新的尺寸测算和分配进行排队。
信号
从 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.get_request_mode
一个虚拟函数,用于返回布局管理器的首选请求模式;例如,“宽高比”或“高宽比”;参见 GtkSizeRequestMode
。