回 OPENHOME 首頁
語言技術:GTK Gossip
GTK (Gimp ToolKit)
原本來影像處理軟體 GIMP(
GNU Image Manipulation Program
) 的開發工具箱,後來成為一個跨平台的圖形介面開發套件,GTK 基於 C 語言,但不限於使用 C 語言,您也可以使用 C++、Java、PHP、Perl、Python、Ruby 等語言來撰寫 GTK 程式(參考
Language Bindings
), 這邊的文件將記錄一些 GTK+ 的心得,所使用的環境為 Ubuntu 8.04。
入門
先來嘗試一下幾個簡單的 GTK 程式,並初步了解一些核心特性。
Hello!World! Orz..
第一步,當然是先 克服 GTK 的安裝問題,然後來個簡單的 Hello!World! Orz...
Ubuntu 下安裝 GTK
第一 個 GTK 程式
Windows 下第一個 GTK 程式
GTK 的物件導向架構
Signal 與 Callback
在 GTK 的元件上操作,會發出特定的 Signal ,將 Signal 連接至特定的 Callback 函式,以完成對某個動作的處理。
使用 Signal 關閉視窗
自訂 callback 函式
內建 Signal 的發射與停止
事件處理
GDK 事件會傳播給 GtkWidget,引發一個與事件相對應的事件 Signal,再透過 Callback 函式處理事件。
GDK 事件結構
GTK 事件處理函式
事件遮罩(Event Mask)
基本版面配置
基本上就是透過水平與垂直包裝盒,將元件置於其中以完成所需的版面配置。
GtkHBox 與 GtkVBox
GtkFrame 與 GtkButtonBox
GtkTable
其它
GTK 官方網站上,有許多的參考文件與範例,為入門時的必看資料。
GTK 參考文件
簡介 Glade
基本圖形元件
元件講是講不完的,這邊主要在簡介幾個基本元件之作用。
按鈕
按鈕是視窗 程式中最基本的元件。
GtkButton 與 GtkToggleButton
影像及文字按鈕
GtkCheckButton 與 GtkRadioButton
對話方塊
對話方塊用來與使用者作簡單的訊息交換與溝通。
GtkMessageDialog
GtkAboutDialog
GtkColorButton 與 GtkColorSelectionDialog
GtkFontButton 與 GtkFontSelectionDialog
GtkFileChooserButton 與 GtkFileChooserDialog
使用 GtkDialog 自訂對話方塊
文字欄位
文字欄位是使用者輸入資訊的基本元件。
GtkEntry
GtkSpinButton
GtkTextView
選項清單
這邊的選項清單元件,遵守 MVC 設計,使用上較為複雜但應用彈性大。
GtkComboBox
GtkComboBox 與 GtkListStore
GtkComboBox 與 GtkTreeStore
GtkTreeView 與 GtkListStore
GtkTreeView 與 GtkTreeStrore
版面元件
除了上面介紹的三種基本版面配置之外,還可以使用一些版面元件來協助元件的群組與版面的切割。
GtkNotebook
GtkPaned
GtkScrolledWindow
GtkAlignment、 GtkFixed 與 GtkLayout
GtkFrame 與 GtkAspectFrame
進階元件使用
來看看一些選單、列、等元件之使用與組合方式,以及繪圖、列印等功能。
選單元件
選單是視窗程式最 常見的功能了。
GtkHandleBox
GtkMenuBar、 GtkMenu 與 GtkMenuItem
GtkCheckMenuItem、 GtkRadioMenuItem 與 GtkTearoffMenuItem
GtkUIManager
列元件
進度列、工具列、 狀態列。
GtkProgressBar
GtkToolBar
GtkStatusBar
其它元件
簇繁不及備載...Orz...
GtkStyle 與資源檔
GtkLabel
GtkScale
GtkEntryCompletion
GtkArrow
GtkRuler
GtkAssistant
GtkCalendar
GtkDrawingArea
GLib
GLib 是 GTK 所需的函式庫之一,不過它是個可獨立使用的函式庫。
基本型態、巨集、公用(Utility)函式
一些有的沒的常用函式,先放在一起講......Orz
GLib 基本型態與巨集
GTimer
Timeout 與 Idle
環境資訊
日誌 (Logging)
輸入輸出
來了解一些基本檔案讀寫、目錄資訊的取得方式,以及輸入輸出 Channel 的使用。
基本檔案讀寫
目錄資訊
GIOChannel 與檔案處理
GIOChannel 與 Pipe
資料結構、記憶體配置
來看看 GLib 提供了哪些常用的資料結構處理及動態記憶體配置函式。
GString
GArray、GPtrArray、 GByteArray
GSList、 GList
GHashTable
GTree 與 GNode
記憶體配置
執 行緒
GLib 提供了 GThread 作為多執行緒的支援。
GThread
GMutex
GCond
附錄
GTK+ 2.0 Tutorial
GTK+ Reference Manual
GTK+ / Gnome Application Development
GTK+ and Glade3 GUI Programming Tutorial
GTK+ 2.0 Tree View Tutorial