GTK+ 2.0 教學-元件概述

在 GTK 中創建一個元件的一般步驟是:

  1. gtk_*_new() – 創建各種元件的函式。這些函式都將在這一節中作詳細的介紹。
  2. 把所有想連接的信號都連接到對應的信號處理函式。
  3. 設定元件的屬性。
  4. 用 gtk_container_add() 或 gtk_box_pack_start()等適當的函式把元件放置到一個容器元件中。
  5. gtk_widget_show() 顯示元件。

gtk_widget_show() 讓 GTK 知道我們已經完成設定元件屬性的工作,並且能夠讓它顯示出來了。你也可以用 gtk_widget_hide 使元件再次隱藏起來。各個元件顯示的順序並不重要,不過我建議在最後顯示視窗,這樣整個視窗就可以立刻彈出來,而不是讓用戶看著視窗裡的元件一個個生成並顯示出來。在視窗(也是一個元件)用 gtk_widget_show() 函式顯示出來之前,它的子元件並不會被顯示。

型別轉換

再繼續下去你會發現,GTK 使用了一套型別轉換系統。它利用的是一套巨集,這些巨集在轉換前還會測試能否進行轉換。一些常見的巨集是:

  G_OBJECT (object)
  GTK_WIDGET (widget)
  GTK_OBJECT (object)
  GTK_SIGNAL_FUNC (function)
  GTK_CONTAINER (container)
  GTK_WINDOW (window)
  GTK_BOX (box)

這些都用來在函式中轉換參數。你將在範例中看到它們的使用,只要看看函式的宣告就可以知道什麼時候需要使用它們。

在下節介紹的類別的組織裡,你將知道所有的 GtkWidget 都是從 GObject 這個基本類別生來的。也就是說,你能把widget傳給任何需要以object型態作為參數的函式 – 只要用一下 G_OBJECT() 巨集。

例如:

g_signal_connect( button, "clicked",
                  G_CALLBACK (callback_function), callback_data);
這樣把 button 轉換為一個 object,並提供一個函式指標作為回呼函式。

很多元件也是容器,如果你看下一節介紹的類別的組織,你就會注意到很多元件是從容器類別生來的。這些元件都可以用 GTK_CONTAINER 巨集轉換後傳遞給需要以container作為參數的函式。

可惜的是,這些巨集在本教學中並沒有廣泛地提及,不過我推薦去看一下 GTK 的標頭檔或者 GTK API 參考手冊。這將很有用。實際上,通過看函式的宣告來學習一個元件的使用也不難。

感謝你看到這裡,很快就可以離開了,但最好的獎勵行動就是按一下幫我分享或留言,感恩喔~

點我分享到Facebook

1 則留言


發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *