学习 GTK+(一)

来源:互联网 发布:用户数据完整性保护 编辑:程序博客网 时间:2024/05/18 19:45
#include<gtk/gtk.h>int main(int argc, char **argv){GtkWidget *window;gtk_init(&argc,&argv);window=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_widget_show(window);gtk_main();return 0;}


编译:gcc gtk1.c -o gtk `pkg-config --cflags --libs gtk+-3.0`

解析:gtk_init(&argc,&argv);  把命令行参数传给GTK+,这个函数需要在GTK+函数之前调用。

window=gtk_window_new(GTK_WINDOW_TOPLEVEL); 用来生成一个标准的有框架的窗口, 参数同样可以为GTK_WINDOW_POPUP  生成一个适用与对话框的无框架的对话框

最后要调用  gtk_widget_show(window); 显示窗口
             


2.事件、信号、回调函数

回调函数原型   void a_callback_function(GtkWidget *widget, gpointer data);

其中第一个参数是指向发出信号的构件的指针,第二个参数是当你选择链接回调函数时自己选择的一个任意指针。

链接回调函数原型  gulong g_signal_connect(gpointer *object,  const gchar *name,GCallback func,gpointer user_data );

参数含义依次为,构件、信号名、回调函数指针和一个任意指针;

例如:    g_signal_connect(button,"clicked",G_CALLBACK(button_clicked),"Button 1");



#include<stdio.h>static int count=0;void button_clicked(GtkWidget *button,gpointer data){    printf("%s pressed %d time(s)\n",(char *)data,++count);}int main(int argc, char **argv){    GtkWidget *window;    GtkWidget *button;    gtk_init(&argc,&argv);    window=gtk_window_new(GTK_WINDOW_TOPLEVEL);    button=gtk_button_new_with_label("hello,world!");    gtk_container_add(GTK_CONTAINER(window),button);    g_signal_connect(button,"clicked",G_CALLBACK(button_clicked),"Button 1");    g_signal_connect(window,"destory",G_CALLBACK(gtk_main_quit),NULL);    gtk_widget_show(button);    gtk_widget_show(window);    gtk_main();    return 0;}