GTK+学习之 helloworld

本文介绍GTK+库的基础使用方法,包括如何使用pkg-config配置编译选项、初始化GTK+环境、创建和显示窗口的基本步骤,以及简单的事件处理过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 pkg-config --libs --cflags gtk+-2.0

 pkg-config --version  //查看pkg-config的版本号

 pkg-config --modversion gtk+//查看gtk1.0的版本号

 pkg-config --modversion gtk+-2.0//查看gtk2.0的版本号

#include <gtk/gtk.h> 包含了Gtk+编程中所有需要的头文件,也包含gdk.h和glib.h等如果要用到Gnome的构件和库函数,包含gnome.h就可以了



gtk_init(&argc,&argv)
调用gtk_init(gint *argc,gchar ***argv)
为我们设置一些缺省值,例如视觉和颜色映射,然后调用gdk_init(gint *argc,gchar ***argv),这个函数将函数库初始化,设置缺省的信号处理函数,并检查通过命令行传递给应用程序的参数。
主要就爱你查下面所列的一些值
--gtk-module
--g-fata1-warnings
--gtk-debug
--gtk-no-debug
--gdk-debug
--gdk-no-debug
--display
--sync
--no-xshm
--name
--class
它从变量表中删除以上参数,并分离出所有不识别的值,应用程序可以分析或忽略这些值,由此声称一些Gtk应用程序可以接受的标准参数。
下面两行将创建和显示一个窗口:
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
GTK_WINDOW_TOPLEVEL参数指明让窗口使用“窗口管理程序”指定的状态设置和位置布置

gtk_main();
是每个Gtk应用程序都要调用的函数,当程序运行到这里时,Gtk将进入等待状态,等候X事件、timeout或文件输入\输出发生

#include <gtk/gtk.h> 包含了Gtk+编程中所有需要的头文件,也包含gdk.h和glib.h等
如果要用到Gnome的构件和库函数,包含gnome.h就可以了

gtk_init(
&argc,&argv)
调用gtk_init(gint 
*argc,gchar ***argv)
为我们设置一些缺省值,例如视觉和颜色映射,然后调用gdk_init(gint 
*argc,gchar ***argv),这个函数将函数库初始化,设置缺省的信号处理函数,并检查通过命令行传递给应用程序的参数。
主要就爱你查下面所列的一些值
--gtk-module
--g-fata1-warnings
--gtk-debug
--gtk-no-debug
--gdk-debug
--gdk-no-debug
--display
--sync
--no-xshm
--name
--class
它从变量表中删除以上参数,并分离出所有不识别的值,应用程序可以分析或忽略这些值,由此声称一些Gtk应用程序可以接受的标准参数。
下面两行将创建和显示一个窗口:
window
=gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_widget_show(window);
GTK_WINDOW_TOPLEVEL参数指明让窗口使用“窗口管理程序”指定的状态设置和位置布置

gtk_main();
是每个Gtk应用程序都要调用的函数,当程序运行到这里时,Gtk将进入等待状态,等候X事件、timeout或文件输入\输出发生

/*helloword.c*/

#include 
<gtk/gtk.h>
void hello(GtkWidget *widget,gpointer data)
{
 g_print(
"Hello World!\n");
}

gint delete_event(GtkWidget 
*widget,GdkEvent *event,gpointer data)
{
 g_print(
"delete event occurrend\n");
 
return (TRUE);
}

void destroy(GtkWidget *widget,gpointer data)
{
 gtk_main_quit();
}

int main(int argc,char *argv[])
{
 GtkWidget 
*window;
 GtkWidget 
*button;
 gtk_init(
&argc,&argv);
 window
=gtk_window_new(GTK_WINDOW_TOPLEVEL);
 g_signal_connect(G_OBJECT(window),
"delete_event",G_CALLBACK(delete_event),NULL);

 g_signal_connect(G_OBJECT(window),
"destory",G_CALLBACK(destroy),NULL);
 gtk_container_set_border_width(GTK_CONTAINER(window),
10);
 button
=gtk_button_new_with_label("Hello world");g_signal_connect_swapped(G_OBJECT(button),"clicked",G_CALLBACK(hello),NULL);
 g_signal_connect(G_OBJECT(button),
"clicked",G_CALLBACK(hello),NULL);
 g_signal_connect_swapped(GTK_OBJECT(button),
"clicked",G_CALLBACK(gtk_widget_destroy),window);
 
 gtk_container_add(GTK_CONTAINER(window),button);
 gtk_widget_show(button);
 gtk_widget_show(window);
 gtk_main();
 
return(0);
}
 

gcc 
-o helloword helloword.c `pkg-config --cflags --libs gtk+-2.0`


gcc -o helloword helloword.c `pkg-config --cflags --libs gtk+-2.0`

转载于:https://www.cnblogs.com/wangtianxj/archive/2009/06/04/1496053.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值