GTK 有多种元件能够由用户通过滑鼠或键盘进行调整,比如范围元件。还有一些元件,比如说 GtkText 和 GtkViewport,内部都有一些可调整的属性。
很明显,当用户调整范围元件的值时,应用程式需要对值的变化进行响应。一种办法就是当元件的调整值发生变化时,让每个元件引发自己的信号,将新值传递到信号处理函式中,或者让它在元件的内部资料结构中查找元件的值。但是,也许需要将这个调整值同时连接到几个元件上,使得调整一个值时,其它的元件都随之响应。 最明显的范例就是将一个卷轴连接到一个画面平移视埠(panning viewport)或者文字区域(scrolling text area)上。如果每个元件都要有自己的设置或获取调整值的方法,那么程式员就可以编写自己的的信号处理函式来翻译
元件讯号的输出及另一个调整设定函式的输入。
GTK 用一个调整物件(Adjustment object)解决了这个问题。调整物件不是元件,但是为元件提供了一种以抽象、灵活的方法来储存及传递调整值的资讯。调整物件最明显的用处就是为范围元件(比如 卷轴和比例元件)储存组态参数和值。然而,因为调整物件是从Object衍生出来的,除了其正常的资料结构之外,它还具有一些特殊的功能。最重要的是,它们能够引发信号,就像元件一样,这些信号不仅能够让程式对用户在可调整元件上的输入进行响应,还能在可调整元件之间透明地传播调整值。
在许多其它的元件中都能够看到调整物件的用处。比如进度显示器、视埠、卷动视窗等。
创建一个调整物件
许多使用调整物件的元件都能够自动创建它,但是有些情况下,必须自己手工创建。用下面的函式创建调整物件:
GtkObject *gtk_adjustment_new( gdouble value,
gdouble lower,
gdouble upper,
gdouble step_increment,
gdouble page_increment,
gdouble page_size );
|
其中的value参数是要赋给调整物件的初始值,通常对应于一个可调整元件的最高或最低位置。lower参数指定调整物件能取的最低值,step_increment参数指定用户能小步增加的值,page_increment是用户能大步调整的值。page_size参数通常用于设置分栏元件(panning widget)的可视区域。upper参数用于表示分栏元件的子元件的最底部或最右边的坐标。因而,它不一定总是value能取的最大值,因为这些元件的page_size通常是非零值(value能取的最大值一般是upper-page_size)。
1 則留言
Comments are closed.