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 則留言