首頁 / LinuxDev / GTK+ 2.0 教學-對話框 Dialogs

GTK+ 2.0 教學-對話框 Dialogs

對話框元件非常簡單,事實上它僅僅是一個預先封裝了幾個元件到裡面的視窗。對話框的資料結構是:

struct GtkDialog
{
      GtkWindow window;

      GtkWidget *vbox;
      GtkWidget *action_area;
};

從上面可以看到,對話框只是簡單地創建一個視窗,並在頂部封裝一個縱向盒(vbox),然後在這個縱向盒中封裝一個分隔線(separator),再加一個稱為「活動區(action_area)」的橫向盒(hbox).

對話框元件可以用於彈出訊息,或者其它類似的任務。這裡有兩個函式來創建一個新的對話框:

GtkWidget *gtk_dialog_new( void );

GtkWidget *gtk_dialog_new_with_buttons( const gchar    *title,
                                        GtkWindow      *parent,
                                        GtkDialogFlags  flags, 
                                        const gchar    *first_button_text,
                                        ... );

第一個函式將創建一個空的對話框,你現在就可以使用它了。你可以封裝一個按鈕到它的活動區(action_area),就像下面這樣:

    button = ...
    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->action_area),
                        button, TRUE, TRUE, 0);
    gtk_widget_show (button);

你可以通過封裝來擴充活動區,比如,增加一個標籤,可以像下面這樣做:

    label = gtk_label_new ("Dialogs are groovy");
    gtk_box_pack_start (GTK_BOX (GTK_DIALOG (window)->vbox),
                        label, TRUE, TRUE, 0);
    gtk_widget_show (label);

作為一個示例,可以在活動區裡面封裝兩個按鈕:一個「取消」按鈕和一個「確定」按鈕,再在縱向盒(vbox)裡封裝一個標籤,以便向用戶提出疑問,或顯示一個錯誤訊息等。然後可以把不同信號連接到每個按鈕,對用戶的選擇進行響應。

如果由對話框提供的縱向和橫向盒的簡單功能不能滿足你的需要,可以簡單地在封裝盒中添加其它佈局元件。例如,可以在縱向盒中添加一個封裝表格(table)。

更複雜的 gtk_dialog_new_with_buttons() 函式允許你設置下面的一個或多個參數。

GTK_DIALOG_MODAL
使對話框使用獨佔模式。

GTK_DIALOG_DESTROY_WITH_PARENTS
保證對話框在指定父視窗被關閉時也一起關閉。

GTK_DIALOG_NO_SEPARATOR
省略縱向盒與活動區之間的分隔線

Print Friendly, PDF & Email
馬上成為工作達人的Fans

About ㄚ琪

工作達人Fun Taiwan的創辦者及總編,可以在這裡更認識他。

One comment

發表迴響

你的電子郵件位址並不會被公開。 Required fields are marked *

*

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料

Scroll To Top