GObject
文章平均质量分 88
李尔阳
这个作者很懒,什么都没留下…
展开
-
sec7-可派生和非抽象类型
创建非抽象可派生类型比创建抽象类型更常见。本节介绍如何创建非抽象可派生类型对象。派生类型的例子是string的对象。它是TStr。它的子对象是一个数字字符串对象。数字字符串是表示数字的字符串。例如“0”、“-100”、“123.45”。子对象(数字字符串)将在下一节中解释。我想先写字符串,再写可派生对象。因为TStr是字符串的对象,我们需要小心使用字符串编写程序。原创 2023-01-02 12:45:26 · 454 阅读 · 0 评论 -
sec6-可派生类型和抽象类型
有两种类型,final类型和derivable类型。final类型没有任何子对象。derivable有子对象。这两个对象之间的主要区别是它们的类。final类型对象没有自己的类区域。类的唯一成员是它的父类。派生对象在类中有自己的区域。该类对其子类开放。G_DECLARE_DERIVABLE_TYPE 用于声明可派生类型。(())原创 2023-01-02 09:46:57 · 472 阅读 · 0 评论 -
sec5-属性
如果定义了多个属性,请使用属性id数组。最好去看Gtk源文件,比如gtklabel.c。GtkLabel有18个属性。在src/tdouble6目录中有一个例子。原创 2022-12-30 11:55:13 · 1299 阅读 · 0 评论 -
sec4-信号
信号提供了对象之间的通信手段。当某些事情发生或完成时,就会发出信号。第一步和第四步是在信号所属的对象上完成的。第三步通常在对象之外完成。信号的处理过程是复杂的,要解释所有的特征需要很长的时间。本节的内容仅限于编写简单信号的最基本内容,不一定准确。如果您需要准确的信息,请参阅GObject API参考。描述信号有四个部分。原创 2022-12-30 09:59:30 · 660 阅读 · 0 评论 -
sec3-类型系统和注册流程
当我们说“类型”时,它可以是类型系统中的类型或C语言类型。例如,GObject是类型系统中的类型名称。char, int或double是C语言类型。当“类型”这个词在上下文中的意思很清楚时,我们就叫它“类型”。但如果它是模棱两可的,我们称之为“C类型”或“类型系统中的类型”。TDouble对象具有类和实例。类的C类型是TDoubleClass。}TDoubleClass是一个C结构标签名,TDoubleClass是“struct TDoubleClass”。原创 2022-12-28 19:47:15 · 801 阅读 · 0 评论 -
sec2-GObject
GObject实例用函数g_object_new创建。GObject不仅仅有实例,也有类。从广义上讲,GObject意味着对象,这个对象包括它的类和实例。在狭义上将,GObject是一个C结构体的定义。这个GObject程序是在GLib源文件里面,可以从GNOME下载GLib源文件。5-6:instance1和instance2是指向GObject实例的指针,class1和class2指向实例的一个类(同一个类)。原创 2022-12-28 19:47:28 · 684 阅读 · 0 评论 -
九、GObject信号机制--信号Accumulator
1 类设计/* file name : signal-demo.h */#ifndef SIGNAL_DEMO_H#define SIGNAL_DEMO_H#include <glib-object.h>#define SIGNAL_TYPE_DEMO (signal_demo_get_type ())#define SIGNAL_DEMO(object) \ G_TYPE_CHECK_INSTANCE_CAST ((object), SIGNAL_TYPE_DE原创 2021-09-02 15:28:21 · 169 阅读 · 0 评论 -
八、GObject信号机制
1 编写SignalDemo类/* file name : signal-demo.h */#ifndef SIGNAL_DEMO_H#define SIGNAL_DEMO_H #include <glib-object.h> #define SIGNAL_TYPE_DEMO (signal_demo_get_type ())#define SIGNAL_DEMO(object) \ G_TYPE_CHECK_INSTANCE_CAST ((object),转载 2021-09-02 12:08:41 · 516 阅读 · 1 评论 -
七、GObject闭包
1 闭包:一个函数加上它所访问的所有非局部变量(传入的参数?)#include <math.h>#include <glib-object.h> voidg_cclosure_user_marshal_INT__VOID_VOID (GClosure *closure, GValue *return_value G_GNUC_UNUSED,原创 2021-09-02 10:35:08 · 183 阅读 · 0 评论 -
六、回调函数与闭包
1 回调函数1.1 C库函数-qsort()void qsort(void *base, size_t nitems, size_t size, int (*compar)(const void *, const void*))参数base – 指向要排序的数组的第一个元素的指针。nitems – 由base指向的数组中元素的个数。size – 数组中每个元素的大小,以字节为单位。compar – 用来比较两个元素的函数。#include<stdio.h>#include原创 2021-09-01 10:05:09 · 102 阅读 · 0 评论 -
五、GObject对接口的模拟
1 USB接口1.1 USB接口头文件/* file name : my-iusb.h */#ifndef MY_IUSB_H#define MY_IUSB_H #include <glib-object.h> #define MY_TYPE_IUSB (my_iusb_get_type ())#define MY_IUSB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj),MY_TYPE_IUSB, MyIUsb))#define MY_I原创 2021-08-31 16:46:53 · 100 阅读 · 0 评论 -
四、GObject子类的继承
1 Bibtex文献类的设计1.1 Bibtex类头文件/* file name: my-bibtex.h */#ifndef KB_BIBTEX_H#define KB_BIBTEX_H#include<glib-object.h>#define MY_TYPE_BIBTEX (my_bibtex_get_type())#define MY_BIBTEX(object) \ G_TYPE_CHECK_INSTANCE_CAST ((object), MY_TY原创 2021-08-31 15:18:55 · 195 阅读 · 0 评论 -
三、GObject私有属性的查看与设置
1.1 类头文件#ifndef PM_DLIST_H#define PM_DLIST_H#include <glib-object.h>#define PM_TYPE_DLIST (pm_dlist_get_type ())/* 将基类指针类型转换为PMDList类的指针类型 */#define PM_DLIST(object) G_TYPE_CHECK_INSTANCE_CAST ((object),\原创 2021-08-26 21:41:18 · 578 阅读 · 0 评论 -
二、GObject子类对象的私有属性模拟
1.1 PMDList类头文件/* file name : pm-dlist.h */#ifndef PM_DLIST_H#define PM_DLIST_H#include <glib-object.h>/** * 通过该宏指向的pm_dlist_get_type函数 * 可以获得PMDList类结构体信息和初始化函数 * pm_dlist_get_type函数内部的实现由G_DEFINE_TYPE宏实现 */#define PM_TYPE_DLIST (原创 2021-08-26 11:26:52 · 132 阅读 · 0 评论 -
一、使用GObject库模拟类的封装
1 子类结构体1.1 PM_Dlist类的头文件 本人GObject学习主要参考博客,讲的深入浅出,基本把我学习GStreamer遇见的基于GObject函数将明白了。/* file name : pm-dlist.h */#ifndef PM_DLIST_H#define PM_DLIST_H#include<glib-object.h>/* pm_dlist_get_type 函数的作用就是获取PMDList类的具体结构 */#define PM_TYPE_DLIST (原创 2021-08-26 09:21:27 · 201 阅读 · 0 评论