主要使用的函数有g_object_set_data与g_object_get_data两个函数
他们的主要功能是把某个指针(任意类型的[可以指向某个构件],原型为gpointer ,即空指针)与某个构件相关连。
关联后即可通过构件+相应的key获取到相应的指针。
Code
#include <gtk/gtk.h>
void object_data_get(GtkWidget* wid)
{
char* var = g_object_get_data(G_OBJECT(wid), "1");
char* var2 = g_object_get_data(G_OBJECT(wid), "2");
printf("the string = %s \n", var);
printf("the string = %s \n", var2);
return ;
}
int main(int argc, char**argv)
{
gtk_init(&argc, &argv);
GtkWidget* label = gtk_label_new("this is a new lable");
g_object_set_data(G_OBJECT(label), "1", "hello");
g_object_set_data(G_OBJECT(label), "2", "world");
object_data_get(label);
return ;
}
另外如果是clutter中一些不为float reference的东东,也可以用此法做个关联
最后用clutter_container_find_by_name找到相应的构件,在通过指定的key找到需要释放的构件进行释放。