首頁 / LinuxDev / GTK+ 2.0 教學-表格封裝範例

GTK+ 2.0 教學-表格封裝範例

這裡我們創建一個包含一個2×2表格的視窗,表格中放入三個按鈕。前兩個按鈕將放在上面那行裡。而第三個,quit按鈕,放在下面那行,並佔據了兩列。這就是說它看起來應該像這樣:

原始碼如下:

#include </gtk.h>

/* 我們的回呼。 傳到這個函式的資料被列印到標準輸出 */
static void callback( GtkWidget *,
                      gpointer   data )
{
    g_print ("Hello again - %s was pressed\n", (char *) data);
}

/* 這個回呼退出程式 */
static gboolean delete_event( GtkWidget *,
                              GdkEvent  *event,
                              gpointer   data )
{
    gtk_main_quit ();
    return FALSE;
}

int main( int   argc,
          char *argv[] )
{
    GtkWidget *window;
    GtkWidget *button;
    GtkWidget *table;

    gtk_init (&argc, &argv);

    /* 創建一個新視窗 */
    window = gtk_window_new (GTK_WINDOW_TOPLEVEL);

    /* 設置視窗標題 */
    gtk_window_set_title (GTK_WINDOW (window), "Table");

    /* 為delete_event設置一個立即退出GTK的處理函式。 */
    g_signal_connect (window, "delete-event",
                      G_CALLBACK (delete_event), NULL);

   /* 設置視窗的邊框寬度。 */
    gtk_container_set_border_width (GTK_CONTAINER (window), 20);

    /* 創建一個2x2的表格 */
    table = gtk_table_new (2, 2, TRUE);

    /* 將表格放進主視窗 */
    gtk_container_add (GTK_CONTAINER (window), table);

    /* 創建第一個按鈕 */
    button = gtk_button_new_with_label ("button 1");

    /* 當這個按鈕被點擊時,我們呼叫 "callback" 函式,並將一個 * 指向"button 1"的指標作為它的參數 */
    g_signal_connect (button, "clicked",
	              G_CALLBACK (callback), (gpointer) "button 1");

    /* 將button 1插入表格的左上象限(quadrant) */
    gtk_table_attach_defaults (GTK_TABLE (table), button, 0, 1, 0, 1);

    gtk__show (button);

    /* 創建第二個按鈕 */

    button = gtk_button_new_with_label ("button 2");

    /* 當這個按鈕被點擊時,我們呼叫 "callback" 函式,並將一個指向"button 2"的指標作為它的參數 */
    g_signal_connect (button, "clicked",
                      G_CALLBACK (callback), (gpointer) "button 2");
    /* 將button 2插入表格的右上象限 */
    gtk_table_attach_defaults (GTK_TABLE (table), button, 1, 2, 0, 1);

    gtk__show (button);

    /* 創建"Quit"按鈕 */
    button = gtk_button_new_with_label ("Quit");

    /* 當這個按鈕被點擊時,我們呼叫 "delete_event" 函式接著程式就退出了 */
    g_signal_connect (button, "clicked",
                      G_CALLBACK (delete_event), NULL);

    /* 將退出按鈕插入表格的下面兩個象限 */
    gtk_table_attach_defaults (GTK_TABLE (table), button, 0, 2, 1, 2);

    gtk__show (button);

    gtk__show (table);
    gtk__show (window);

    gtk_main ();

    return 0;
}
« 
單元首頁
 »
Print Friendly, PDF & Email
馬上成為工作達人的Fans

About ㄚ琪

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

One comment

發表迴響

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

*

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

Scroll To Top