GTK編程:button控件與消息事件

實現功能:沒什麼特定功能,只是爲了熟悉一下button控件和消息事件而已(彌補上一個程序沒有實現的消息事件)

/* File: button_hello.c
 * Date: Tue Mar 24 14:58:06 HKT 2015
 * Describe: a simple button show 
 * Autor: won
 */

#include <gtk/gtk.h>
#include <stdio.h>

//這是一個回調函數,觸發時會在終端打印信息
void hello(GtkWidget *widget, gpointer *data)
{
    g_print("data from button: %s\n", (char *)data);
}

//這是一個回調函數,用來響應關閉信號
void destroy(GtkWidget *widget, gpointer *data)
{
    gtk_main_quit();
}

int main(int argc, char *argv[])
{
    //定義指向控件的指針
    GtkWidget *window;
    GtkWidget *button;

    //初始化圖形顯示環境
    gtk_init(&argc, &argv);

    //創建窗口,並設置當關閉窗口時要執行的回調函數
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    g_signal_connect(GTK_OBJECT(window), "destroy",
        GTK_SIGNAL_FUNC(destroy), NULL);

    //設置窗口屬性
    gtk_container_border_width(GTK_CONTAINER(window), 20);

    //創建按鈕,並設置當單擊按鈕時要執行的回調函數
    button = gtk_button_new_with_label("Hello World");
    g_signal_connect(GTK_OBJECT(button), "clicked",
        GTK_SIGNAL_FUNC(hello), "button message");

    //將按鈕加入到窗口中
    gtk_container_add(GTK_CONTAINER(window), button);

    //顯示窗體和按鈕
    gtk_widget_show(button);
    gtk_widget_show(window);

    //進入消息處理循環
    gtk_main();

    return 0;

}

主要是g_signal_connect()函數,原型如下:

#define g_signal_connect(instance, detailed_signal, c_handler, data)

編譯:

gcc button_hello.c -o button_hello `pkg-config --cflags --libs gtk+-2.0`

運行效果:
這裏寫圖片描述
按下按鍵的時候會打印:

$ ./button_hello 
data from button:  button message
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章