可调整构件大致可以分为两组:一组对这些值使用特定的单位,另一组将这些值当作任意数值。后一组包括范围构件:滚动条、比例构件(scales)、进度条以及微调按钮(spin button)。这些构件的值都可以使用鼠标和键盘直接进行调整。它们将调整对象的 lower和upper值当作用户能够操纵的调整值的范围。缺省时,它们只会修改调整对象的value参数,也就是说,它们的范围一般都是不变的。
另一组包含文本构件、视角构件、复合列表框(compound list)以及滚动窗口构件。所有这些构件都是间接通过滚动条进行调整的。所有使用调整对象的构件都可以使用自己的调整对象,或者使用你创建的调整对象,但是最好让这一类构件都使用它们自己的调整对象。一般它们都对value以外的参数作了新的解释,对这些值的解释各个构件都有所不同,你需要阅读它们的源代码。
现在,你也许在想,文本构件和视角构件里的调整对象除了value参数以外,其他的参数都是由它们自己控制的,而滚动条就只修改调整对象的value参数,如果在滚动条和文本构件之间共享调整对象,操纵滚动条会自动调整文本构件吗?当然会,就像下面的代码所做的:
/* 视角构件会自动为自己创建一个调整对象 */ viewport = gtk_viewport_new (NULL, NULL); /* 让垂直滚动条使用视角构件已经创建的调整对象 */ vscrollbar = gtk_vscrollbar_new (gtk_viewport_get_vadjustment (viewport)); |