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

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

原始碼如下:

#include <gtk/gtk.h>

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

/* 這個回呼退出程式 */
static gboolean delete_event( GtkWidget *widget,
                              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_widget_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_widget_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_widget_show (button);

    gtk_widget_show (table);
    gtk_widget_show (window);

    gtk_main ();

    return 0;
}
« 
單元首頁
 »

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

點我分享到Facebook

1 則留言


發佈留言

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