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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章