IceSandwich

Gtk自定义控件(二)GtkButton剖析

对gtkbutton进行深入剖析

字数统计: 326阅读时长: 1 min
2020/03/23 Share

使用GTK的开发者都清楚,自定义一个控件有多难,但是理解后又觉得这是常规操作。为了清楚了解GObject的工作方式,我们从GtkButon这个简单的控件进行剖析。

从Inspector剖析

写一段简单的代码:

打开Gtk Inspector(按Control-Shift-IControl-Shift-D即可)

可以看到,GtkButton的子控件是GtkLabel和GtkGestureMultiPress,前者是用于文本显示,后者用于捕获鼠标动作。然后我们看一下信号槽:

可以看到GtkButton发出6个信号,连接9个信号(图中没显示)

GtkGestureMultiPress的信号也是非常重要的,这里有6个信号连接的。当然GtkLabel的信号也需要关注。

从层次信息获知,GtkButton是继承于GtkBin的

到这里似乎就没什么好看的了,接着到了激动人心的时刻啦~

从源码剖析

在整个gtk源码中抽取幸运儿gtkbutton出来阅读,这么长的代码看得赏(sang)心(xin)悦(bing)目(kuang)。

gtkbutton.h

G_BEGIN_DECLS和G_END_DECLS是一对的,他们的定义是:

1
2
#define G_BEGIN_DECLS extern "C" {
#define G_END_DECLS }

嗯,就是为了兼容C++准备的 。接着一堆#define,我们一一细看。

其实最近也没在搞GTK了

先鸽一下吧,到搞GTK的时候再更新…

参考:

CATALOG
  1. 1. 从Inspector剖析
  2. 2. 从源码剖析
    1. 2.1. gtkbutton.h
  3. 3. 其实最近也没在搞GTK了