GTK编程:button控件与消息事件

Posted wonxxx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

以上是关于GTK编程:button控件与消息事件的主要内容,如果未能解决你的问题,请参考以下文章

用Jquery的append事件动态添加控件,点击添加时会清空原来动态控件中的值。是啥原因?

MFC编程入门之二十一(常用控件:编辑框Edit Control)

Golang Gtk+3教程:开始

Go语言图形界面开发:Go版GTK

为啥 Gtk 的 button_press_event 不会收到单击左键?

Go语言图形界面开发:Go版GTK