初学GTK+,直接贴代码:
1 /*************************************************************************
2 > File Name: main.cpp
3 > Author: nomis
4 > Mail: simon4761@163.com
5 > Created Time: Sun 19 Aug 2012 03:42:42 PM CST
6 ************************************************************************/
7
8
9 #include<iostream>
10 #include<gtk/gtk.h>
11 using namespace std;
12 class Test{
13 public:
14 Test(){}
15 ~Test(){}
16 static void print_hello (GtkWidget *widget , gpointer data){
17 g_print ("Hello World\n");
18 }
19 };
20
21 int main(int argc , char* argv[]){
22
23 GtkWidget* window;
24 GtkWidget* button;
25 gtk_init(&argc , &argv);
26 window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
27 gtk_window_set_title(GTK_WINDOW(window),"helloworld");
28 g_signal_connect(window , "destroy" , G_CALLBACK(gtk_main_quit) , NULL);
29 gtk_container_set_border_width (GTK_CONTAINER (window), 10);
30 button = gtk_button_new_with_label ("Hello World");
31 g_signal_connect (button, "clicked", G_CALLBACK (Test::print_hello), NULL);
32 gtk_container_add (GTK_CONTAINER (window), button);
33 gtk_widget_show (button);
34 gtk_widget_show(window);
35 gtk_main();
36 return 0;
37 }
这是GTK+文档中的一个实例,但是被我改动过.
我们可以将print_hello或者其它的回调函数放在另一个类里面,而放在其它类里面需要满足的条件是,函数必须由static修饰.然后通过类名::函数名的方法将回调函数传值.