资源描述:
《GTK编程基本示例》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、GTK编程基本示例●GTK简单编程下面的例子是一个GTK最基本例子,它仅仅在屏幕上弹出一个窗口,并且即使关闭该窗口,该程序仍未退出。/*File:base.c*/#includeintmain(intargc,char*argv[]){GtkWidget*window;gtk_init(&argc,&argv);window=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_widget_show(window);gtk_main();return(0);}其中gtk_init(&argc,&argv)是g
2、tk应用程序的初始化部分,它使gtk应用程序可以接受某些命令行的参量:--gtk-module//载入另外的GTK模块--g-fatal-warnings//使所有警告是致命错误--gtk-debug//调试gtk--gtk-no-debug//不调试gtk--gdk-debug//调试gdk--gdk-no-debug//不调试gdk--display//指定display--sync//使X调用按顺序方式--no-xshm//不使用X共享内存--name//指定窗口管理器使用的程序名--class//指定窗口管理器使用的程序类型其中
3、window=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_widget_show(window);建立顶级窗口并且显示该窗口,它在缺省情况下是200x200大小。最后gtk_main()使程序进入事件循环阶段,gtk将在内部处理事件。现在让我们编译文件base.c:gcc-Wall-gbase.c-obase`gtk-config--cflags``gtk-config--libs`其中`gtk-config--cflags`产生编译gtk所使用的头文件位置,`gtk-config--libs`产生
4、连接gtk程序所使用的库。一般地,涉及gtk的库有:libgtk.solibgdk.solibgmodule.solibglib.so。接下来把上面的例子变成一个稍微复杂的例子,该例子弹出一个窗口,并且在窗口中显示一个按钮。/*File:helloworld.c*/#includevoidhello(GtkWidget*widget,gpointerdata){g_print("HelloWorld");}gintdelete_event(GtkWidget*widget,GdkEvent*event,gpointerdata){/
5、/打印信息g_print("deleteeventoccurred");//如果返回FALSE,GTK将发出"destroy"信号;如果返回TRUE,//则不让该窗口关闭return(TRUE);}voiddestroy(GtkWidget*widget,gpointerdata){gtk_main_quit();}intmain(intargc,char*argv[]){//GtkWidget是Widget的类型GtkWidget*window;GtkWidget*button;//gtk初始化gtk_init(&argc,&ar
6、gv);//建立新窗口window=gtk_window_new(GTK_WINDOW_TOPLEVEL);//当使用窗口管理器关闭窗口时,将调用delete_event()函数//本例中所传递的参数是NULLgtk_signal_connect(GTK_OBJECT(window),"delete_event",GTK_SIGNAL_FUNC(delete_event),NULL);//把"destroy"事件和信号处理器联系起来gtk_signal_connect(GTK_OBJECT(window),"destroy",GTK_S
7、IGNAL_FUNC(destroy),NULL);//设置窗口的边界宽度gtk_container_set_border_width(GTK_CONTAINER(window),10);//建立一个标签是"HelloWorld"的按钮button=gtk_button_new_with_label("HelloWorld");//当按钮被单击时,即接收到"clicked"信号,将调用hello()函数gtk_signal_connect(GTK_OBJECT(button),"clicked",GTK_SIGNAL_FUNC(hell
8、o),NULL);//当按钮被单击时,调用gtk_widget_destroy(window)关闭窗口。//这里将引发"destroy"信号gtk_signal_connect_object(GTK_OBJ