學習 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;
}





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