Time of Update: 2018-12-03
GtkProgressBar常用來顯示目前的工作進度,例如程式安裝、檔案複製、下載等,可以使用gtk_progress_bar_new()建立一個GtkProgressBar,若要設定進度比例,可以使用gtk_progress_bar_set_fraction()函式,可設定的值為0.0到1.0,相對應的要取得目前進度比例,可以使用gtk_progress_bar_get_fraction()函式。GtkProgressBar可以使用gtk_progress_bar_set_text()設定文字
Time of Update: 2018-12-03
GtkToolBar可以讓您製作工具列,將一些常用指令群組並依使用者需求而顯示於使用介面上,要建立GtkToolBar,只要使用gtk_toolbar_new()函式,要插入一個項目,則使用gtk_toolbar_insert(),所插入的項目是GtkToolItem的實例,而GtkToolItem可以直接使用gtk_tool_item_set_tooltip_text()設定提示文字,但若您要設定影像與文字,則必須知道,GtkToolItem是GtkBin的子類這個事實:GtkContaine
Time of Update: 2018-12-03
GtkStyle是GTK與GDK之間一個重要的抽象層,它允許您自訂元件的外觀樣式,而不用直接親自處理GDK的繪圖,GtkStyle為GtkWidget的成員之一:typedef struct { /* The style for the widget. The style contains the * colors the widget should be drawn in for each state * along with graphics contexts used to
Time of Update: 2018-12-03
一個構件的剖析要想建立一個新的構件,最重要的是要對 GTK 對象的工作原理有所瞭解。這一節只是一個簡述,詳見參考手冊。GTK 構件具有物件導向的特性。然而,它是用標準的 C 實現的。這極大的改善了在當前 C++ 編譯器上使用的可移植性和穩定性;但是,這也意味著寫構件的人必須注意一些實現的細節。一個構件類的所有執行個體(比如所有的按鈕構件)的共有資訊儲存在類結構裡,類的訊號資訊只以該結構儲存了一份(充當 C
Time of Update: 2018-12-03
到目前為止一直在用的GtkLabel,其實可以設定更多的樣式,例如簡單的標記(markup)、換行、對齊、自動換行等。要設定標記可以使用gtk_label_set_markup()函式,要設定換行,可以使用'/n'來斷行,或是使用gtk_label_set_line_wrap()設定依容器寬度自動換行,要設定對齊可以使用gtk_label_set_justify(),預設是置中對齊,可以設定的值包括了:GTK_JUSTIFY_CENTER:置中對齊(預設)GTK_JUSTIFY_LEFT:靠左對
Time of Update: 2018-12-03
編寫你自己的構件概述雖然隨 GTK 提供了許多類型的構件,這些構件也基本能滿足需要,但有時你仍然需要建立自己的構件類型。因為 GTK完全應用了構件繼承,並且有接近你的需求的構件,通常只要幾行代碼就可以編寫一個新的構件類型。但是在開始之前,確信沒有人編寫了一個同樣的構件。這樣可以避免重複勞動,使 GTK構件保持最小的數目,且有助於保持代碼和不同應用程式介面的一致性。另一方面,一旦你做完了自己的構件,告知大家,其他人會因此而受益。最好的發布地點可能是 gtk
Time of Update: 2018-12-03
GtkScale可以是水平或垂直的拉桿元件,您可以拉動上面的拉桿,拉桿的位置代表某個值並可以加以顯示,您可以使用gtk_hscale_new_with_range()建立一個水平並具有上、下界及遞增值拉桿元件,gtk_vscale_new_with_range()則是垂直元件,GtkScale基本上會顯示浮點數,您可以使用gtk_scale_set_digits()設定顯示的位數,數字的顯示位置可以有上、下、左、右,可使用gtk_scale_set_value_pos()來設定,可設定的值為GT
Time of Update: 2018-12-03
若想要自訂對話方塊,則可以使用GtkDialog來組合元件,GtkDialog預設是分作兩個區域的元件,如下圖所示: 基本上,對話方塊上方是置放各式元件的區域,下方是置放按鈕的區域,中間以分隔線作區隔,從類別結構上來看:typedef struct { GtkWidget *vbox; GtkWidget *action_area;} GtkDialog; GtkDialog上方vbox為一個 GtkVBox,下方action_area為一個 GtkHButtonBox,
Time of Update: 2018-12-03
GtkEntry提供一個文字輸入欄位,可以輸入文字或是設定為一般顯示、密碼顯示或搭配 GtkEntryCompletion 製作自動完成功能等,自動完成的範例稍微複雜,在這邊先不提及,以下的程式是個簡單的設定示範,範例中使用了 GtkTable 進行版面配置:gtk_entry_demo.c#include <gtk/gtk.h>int main(int argc, char *argv[]) { GtkWidget *window; GtkWidget
Time of Update: 2018-12-03
建立一個複合構件介紹你可能樂於建立這樣一種類型的構件,它僅僅是其它 GTK 構件的一個組合。為組裝使用者介面元素以重複使用提供了便利的方法。在標準發布中的檔案選擇和顏色選擇構件就是這種類型構件的樣本。我們將要在這一節建立一個井字遊戲構件,一個 3X3
Time of Update: 2018-12-03
在視窗程式中開啟檔案或另存檔案的動作,會使用檔案對話方塊來讓使用者方便的選取或決定檔案名稱,GtkFileChooserButton可以提供按下後出檔案對話方塊的功能,您可以使用gtk_file_chooser_button_new()來建立按鈕,使用時必須指定
Time of Update: 2018-12-03
GtkSpinButton是個可以讓使用者輸入數值的元件,具有上下調整的箭頭按鈕,可以設定可輸入數值的上下限、小數位數與按下箭頭的遞增(減)值等,雖然名為Button,但GtkSpinButton實際是衍生自GtkEntry:GtkWidget +----GtkEntry +----GtkSpinButton 您可以使用gtk_spin_button_new()函式來新增一個GtkSpinButton:GtkWidget* gtk_spin_button_new(
Time of Update: 2018-12-03
深入的學習創建一個構件涉及很多細節問題,我們以上只是說了一小部分。如果你想寫出自己的構件,GTK原始碼是最好的例子。問你自己幾個關於你想做的構件的問題:是不是一個容器構件?它是否有自己的視窗?它是否是一個對已經存在的構件的修改?然後找到一個類似的構件,開始修改。祝你好運!<<< PreviousHomeNext >>>從頭建立構件Up塗鴉板,一個簡單的繪圖程式
Time of Update: 2018-12-03
GtkCheckMenuItem、GtkRadioMenuItem與GtkTearoffMenuItem都是GtkMenuItem的子類,GtkCheckMenuItem可以產生一個核取方塊,GtkRadioMenuItem產生單選鈕,它們的使用上與 GtkCheckButton與 GtkRadioButton
Time of Update: 2018-12-03
GtkTextView可用於顯示文字與編輯文字,其本身並不具備捲軸功能,您可以使用GtkScrolledWindow套於其上,為其增加捲軸功能,GtkScrolledWindow可以簡單的使用gtk_scrolled_window_new()來建立:GtkWidget *scrolledWindow = gtk_scrolled_window_new(NULL,
Time of Update: 2018-12-03
塗鴉板,一個簡單的繪圖程式概述在這一章,我們會建立一個繪圖程式。期間,我們講解如何處理滑鼠事件、如何在視窗你繪圖和如何使用後端位元影像繪製更好的效果。在建立了簡單的繪圖程式之後,我們會擴充該程式,通過添加對XInput裝置的支援,如手寫板。GTK 提供用來從這種裝置輕易地獲得如壓力和傾角這樣的擴充資訊的常式。<<< PreviousHomeNext >>>深入的學習 事件處理
Time of Update: 2018-12-03
使用撰寫程式的方式來建構選單、工具列等使用者介面,過程有時過於繁瑣,您可以使用GtkUIManager從一個或多個使用者介面定義檔讀取介面定義,並自動建立相對應的Gtk元件,使用者介面定義檔是一個XML檔案。舉個實際的例子來說,可以改寫一下 GtkMenuBar、GtkMenu 與 GtkMenuItem 中的範例,使用GtkUIManager與XML定義檔來作出相同的效果,若XML定義檔如下所示:gtk_ui_manager.xml<ui> <menubar
Time of Update: 2018-12-03
狀態列通常位於視窗的底部,用以顯示目前視窗操作狀況的一些簡單訊息,在GTK中的狀態列元件是GtkStatusBar,您可以使用gtk_statusbar_new()來建立。視窗中各個元件或操作都可以有相對應的狀態訊息,為了讓狀態列區別哪個訊息屬於哪個元件或操作,GtkStatusBar使用ContextID來加以識別,您可以使用gtk_statusbar_get_context_id()並給定一個名稱以取得對應的Context ID,例如:GtkWidget *statusbar;gint
Time of Update: 2018-12-03
GtkComboBox可以建立下拉選單,以供使用者選取項目,GtkComboBox實現了Model-View模式,可提供豐富的項目類型與表現方式,但這也提高了程式撰寫時的複雜度,為此,GtkComboBox提供了gtk_combo_box_new_text()以建立一般常用的文字下拉清單功能之GtkComboBox,若想要設定下拉清單中的文字項目,則可以使用gtk_combo_box_append_text()、gtk_combo_box_insert_text()、gtk_combo_box_
Time of Update: 2018-12-03
先前看過 GtkEntry 的範例,主要是作為使用者輸入文字之用,您可以搭配GtkEntryCompletion來讓GtkEntry擁有自動完成功能,這需要使用到GtkListStore與GtkTreeIter,這兩個類別在 GtkComboBox與 GtkListStore 曾經介紹過,只要您會使用 GtkEntry、GtkListStore與GtkTreeIter,製作自動完成就不是什麼困難的事。以下直接使用實例來示範: