GB | BIG5
|
| 首頁 > 編程技術 > 其它 > 正文 |
 |
| GTK入門導引--5. 物件概論 |
| 翻譯: Brian Lin, OK STATION, Webmaster (2001-04-27 13:25:05) |
--------------------------------------------------------------------------------
5. 物件概論
在GTK下,一般產生物件的步驟為:
gtk_*_new - 最普遍產生物件的函數.
連接信號到信號處理器.
設定物件屬性.
要將物件包裝到一個container可用gtk_container_add()或gtk_box_pack_start().
gtk_widget_show().
gtk_widget_show()讓GTK知道我們已經完成設定的工作, 並且已經準備好要顯示. 您也可以用gtk_widget_hide來隱藏它. 顯示物件的順序並不太重要, 但我建議最後才顯示, 這樣才不會看到這些視窗們一個一個被畫出來. 子物件在使用gtk_widget_show使視窗出現之前是不會被顯示出來的.
5.1 分派系統
再繼續下去您會發現, GTK使用一種分派系統. 一般是用巨集來完成. 您可以看到諸如以下:
GTK_WIDGET(widget)
GTK_OBJECT(object)
GTK_SIGNAL_FUNC(function)
GTK_CONTAINER(container)
GTK_WINDOW(window)
GTK_BOX(box)
這些在函數中的都是分派參數. 您可以在范例中看到, 而且只要看到該函數就會知道它們是做什麼用的.
從以下的組織圖來看, 所有GtkWidgets都是由GtkObject而來. 這意味您可以在任何地方, 透過GTK_OBJECT()巨集要求一個物件.
例如:
gtk_signal_connect(GTK_OBJECT(button), "clicked",
GTK_SIGNAL_FUNC(callback_function), callback_data);
這樣分派一個按鈕給一個物件, 並且提供一個指標給callback函數.
許多物件同時也是containers. 如果您看看以下的組織圖, 您會看到許多物件由GtkContainer而來 所有這一類的物件都可以用GTK_CONTAINER巨集產生使用containers.
5.2 物件組織圖
這裡是一些參考, 物件組織圖.
GtkObject
+-- GtkData
| \-- GtkAdjustment
|
\-- GtkWidget
+-- GtkContainer
| +-- GtkBin
| | +-- GtkAlignment
| | +-- GtkFrame
| | | *-- GtkAspectFrame
| | |
| | +-- GtkItem
| | | +-- GtkListItem
| | | +-- GtkMenuItem
| | | | +-- GtkCheckMenuItem
| | | | *-- GtkRadioMenuItem
| | | |
| | | *-- GtkTreeItem
| | |
| | +-- GtkViewport
| | \-- GtkWindow
| | +-- GtkDialog
| | \-- GtkFileSelection
| |
| +-- GtkBox
| | +-- GtkHBox
| | \-- GtkVBox
| | +-- GtkColorSelection
| | \-- GtkCurve
| |
| +-- GtkButton
| | +-- GtkOptionMenu
| | \-- GtkToggleButton
| | \-- GtkCheckButton
| | \-- GtkRadioButton
| |
| +-- GtkList
| +-- GtkMenuShell
| | +-- GtkMenu
| | \-- GtkMenuBar
| |
| +-- GtkNotebook
| +-- GtkScrolledWindow
| +-- GtkTable
| \-- GtkTree
|
+-- GtkDrawingArea
+-- GtkEntry
+-- GtkMisc
| +-- GtkArrow
| +-- GtkImage
| +-- GtkLabel
| \-- GtkPixmap
|
+-- GtkPreview
+-- GtkProgressBar
+-- GtkRange
| +-- GtkScale
| | +-- GtkHScale
| | \-- GtkVScale
| |
| \-- GtkScrollbar
| +-- GtkHScrollbar
| \-- GtkVScrollbar
|
+-- GtkRuler
| +-- GtkHRuler
| \-- GtkVRuler
|
\-- GtkSeparator
+-- GtkHSeparator
\-- GtkVSeparator
5.3 沒有視窗的物件
以下的物件跟視窗沒有關系. 如果您希望接取它們的事件, 您需要使用GtkEventBox. 請見 EventBox物件
GtkAlignment
GtkArrow
GtkBin
GtkBox
GtkImage
GtkItem
GtkLabel
GtkPaned
GtkPixmap
GtkScrolledWindow
GtkSeparator
GtkTable
GtkViewport
GtkAspectFrame
GtkFrame
GtkVPaned
GtkHPaned
GtkVBox
GtkHBox
GtkVSeparator
GtkHSeparator
再過來我們會一個一個物件來示范如何產生及顯示. 一個很好的范例是testgtk.c, 您可以在gtk/testgtk.c裡面找到.
--------------------------------------------------------------------------------
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
GTK入門導引--結束語 (2001-04-27 13:38:49) GTK入門導引--20. 寫出屬於您自己的物件 (2001-04-27 13:35:04) GTK入門導引--19. GTK的rc檔 (2001-04-27 13:34:33) GTK入門導引--18. 設定視窗物件屬性 (2001-04-27 13:34:13) GTK入門導引--17. glib (2001-04-27 13:33:43) GTK入門導引--16. 選取區域管理 (2001-04-27 13:33:18) GTK入門導引--14. Menu物件 (2001-04-27 13:32:52) GTK入門導引--13. Undocumented Widgets (2001-04-27 13:32:29) GTK入門導引--12. List物件 (2001-04-27 13:31:41) GTK入門導引--11. 檔案選取物件 (2001-04-27 13:31:14)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |