g_signal_handler_disconnect( G_OBJECT( window ), gpointer_to_int(g_object_get_data( G_OBJECT( window ),"key_press_handler") ) ); g_signal_handler_disconnect( G_OBJECT( window ), gpointer_to_int(g_object_get_data( G_OBJECT( window ),"key_release_handler") ) ); g_signal_handler...
g_object_set_data(GObject* object, gchar* key, gpointer user_data)这个函数是让object对象携带user_data这个指针值,然后通过g_object_get_data(GObject* object, gchar* key)这个函数,利用key指向的字符串取出user_data值,进而通过user_data可以访问它指向的对象。一个object对象可以携带多个user_data的值的。
主要使用的函数有g_object_set_data与g_object_get_data两个函数 他们的主要功能是把某个指针(任意类型的[可以指向某个构件],原型为gpointer ,即空指针)与某个构件相关连。 关联后即可通过构件+相应的key获取到相应的指针。 Code 另外如果是clutter中一些不为float reference的东东,也可以用此法做个关联 最后用c...
#defineFOO_TYPE_OBJECT(foo_object_get_type()) #defineFOO_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),FOO_TYPE_OBJECT,FooObject)) #defineFOO_OBJECT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass),FOO_TYPE_OBJECT,FooObjectClass)) #defineFOO_IS_OBJECT(obj) (G_TYPE_CHECK_INSTANCE_TYP...
—g_object_new能够为我们进行对象的实例化.所以它必然要知道对象对应的类的数据结构. —如上图示例,除第一个参数外,很容易猜想后面的参数都是“属性名-属性值”的配对。 —第一个参数其实是一个宏:具体细节可以不去管它,可以知道它是去获取数据类型xx_xx_get_type函数的作用就是告诉它有关PMDList类的具体结...
void g_object_weak_ref(GObject *object,// 需要建立弱引用的GObject对象GWeakNotify notify,// 对象被释放前需要调用的回调函数gpointerdata);// 传递给回调函数的参数void (*GWeakNotify)(gpointerdata,// 弱连接建立时传入的数据,一般是希望保存对象指针的GObject对象GObject *where_the_object_was);// 被...
GObject 库还引入了类和接口的类型和对象体系。之所以可以,是因为 ANSI C 语言可以理解函数指针。 你可以这样做来声明函数指针: void (*my_callback)(gpointer data); 首先,你需要给变量my_callback赋值: void my_callback_func(gpointer data) {
}if(maObject.isNull()) { Document* doc = documentsToLoad.first();if(!doc){ stateInfo.setError(tr("Documet removed from project"));return; }if(unloadedReference.isValid()) {GObject* obj = doc->findGObjectByName(unloadedReference.objName);if(obj!=NULL&& obj->getGObjectType() == ...
staticGTypeget_base_type(){returnElement::get_base_type(); } This had the effect of telling gobject that my class is based ongstElementwhich was wrong. I thought it was some innocent cast like incantation. This shows the perils of cut and paste but more than that the perils of coding...
// 硬编码GstCaps *Cap = gst_caps_from_string("video/x-raw, width=640, height=480, framerate=25/1, format=YV12, interlace-mode=progressive");data->filter = gst_element_factory_make("capsfilter", "filter");g_object_set(data->filter, "caps", Cap, NULL);data->save_queue = gst_ele...