GTK 有多种控件能够由用户通过鼠标或键盘进行调整,比如:范围控件。还有一些控件,比如说 GtkText 和 GtkViewport,内部都有一些可调整的属性。

    很明显,当用户调整范围控件的值时,应用程序需要对值的变化进行响应。一种办法就是当控件的调整值发生变化时,让每个控件引发自己的信号,将新值传递到信号处理函数中,或者让它在控件的内部数据结构中查找控件的值。但是,也许需要将这个调整值同时连接到几个控件上,使得调整一个值时,其它的控件都随之响应。最明显的示例就是将一个滚动条连接到一个视角控件(viewport)或者滚动的文本区(text area)上。如果每个控件都要有自己的设置或获取调整值的方法,程序员或许需要自己编写很复杂的信号处理函数,以便将这些不同控件之间的变化同步或相关联。

    GTK 用一个调整对象(Adjustment object)解决了这个问题。调整对象不是控件,但是为控件提供了一种以抽象、灵活的方法来传递调整值信息。调整对象最明显的用处就是为范围控件(比如:滚动条和比例控件)储存配置参数和值。然而,因为调整对象是从Object派生的,在其正常的数据结构之外,它还具有一些特殊的功能。最重要的是,它们能够引发信号,就像控件一样,这些信号不仅能够让程序对用户在可调整控件上的输入进行响应,还能在可调整控件之间透明地传播调整值。

    在许多其它的控件中都能够看到调整对象的用处。比如:进度条、视角、滚动窗口等。