简单的GTK点击事件处理方法
1、打开codeblocks,新建console c程序
2、打开glade,新建工程
3、在glade中放置窗口、框容器、按钮、文本
4、为文本、按钮设置id,分别为text和button。
再为按钮设置信号 clicked:bt_click
然后为窗体修改id:window
5、保存glade工程 到刚刚 新建的 c程序 目录下,取名为glade
6、打开codeblocks,将如下代码复制到程序中,建议结合注释进行分析
#include <stdio.h>
#include <stdlib.h>
#include <gtk/gtk.h>
int main(int argc, char *argv[])
{
//回调函数
void bt_click( GtkWidget *widget, gpointer data);
GtkBuilder *builder;
GtkWidget *window;
GtkWidget *text ;
GtkWidget *button;
gtk_init (&argc, &argv);
builder = gtk_builder_new ();
gtk_builder_add_from_file (builder, "glade.glade"/*读取刚刚保存的glade工程*/, NULL);
window = GTK_WIDGET (gtk_builder_get_object (builder, "window"/*窗体的id*/));
gtk_builder_connect_signals (builder, NULL);
gtk_widget_show (window);
text = GTK_LABEL(gtk_builder_get_object(builder, "text"/*读取ID为text的文本*/));
button = GTK_BUTTON(gtk_builder_get_object(builder, "button"/*读取ID为button的按钮*/));
g_signal_connect(G_OBJECT(button)/*按钮指针*/, "clicked"/*事件类型*/, G_CALLBACK(bt_click)/*回调函数*/, (gpointer)text);//链接到回调函数
gtk_main ();
return 0;
}
//回调函数
G_MODULE_EXPORT void bt_click(GtkWidget *widget,gpointer data){
GtkLabel * labeltext = (GtkLabel *)data;//转换为文本指针
gtk_label_set_label(labeltext, "Set this text");//设置文本内容
}
点击按钮,文本便被改成了相应的文字