学习 GTK+(一)

#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;
}





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