可调整控件大致可以分为两组:

  1. 一组对这些值使用特定的单位;
  2. 一组将这些值当作任意数值;
    该组包括范围控件:滚动条、比例控件(scales)、进度条以及微调按钮(spin button)。这些范围控件的值都可以使用鼠标和键盘直接进行调整。它们将调整对象的 lower 和 upper 值当作用户能够操纵的调整值的范围。缺省时,它们只会修改调整对象的value参数,也就是说,它们的范围一般都是不变的。

另一组包含文本控件、视角控件、复合列表框(compound list)以及滚动窗口控件。所有这些控件都是间接通过滚动条进行调整的。所有使用调整对象的控件都可以使用自己的调整对象,或者使用你创建的调整对象,但是最好让这一类控件都使用它们自己的调整对象。一般它们都对value以外的参数作了新的解释,对这些值的解释各个控件都有所不同,你需要阅读它们的源代码。

现在,你也许在想,文本控件和视角控件里的调整对象除了value参数以外,其他的参数都是由它们自己控制的,而滚动条就只修改调整对象的value参数,如果在滚动条和文本控件之间共享调整对象,操纵滚动条会自动调整文本控件吗?当然会,就像下面的代码所做的:

/* 视角控件会自动为自己创建一个viewport调整对象 */
viewport = gtk_viewport_new (NULL, NULL);
/* 让vscrollbar垂直滚动条使用视角控件已经创建的调整对象viewport */
vscrollbar = gtk_vscrollbar_new (gtk_viewport_get_vadjustment (viewport));