Button Event

/**
* 按钮与按钮事件
*/
#include<gtk/gtk.h>
// 关闭窗口
void CloseTheApp ( GtkWidget * window, gpointer data ) {
gtk_main_quit ();
}
// 触发按钮
void ButtonEvent ( GtkButton * button, gpointer data ) {
g_print ( "The button was " );
g_print ( ( gchar * ) data );
g_print ( "\n" );
}
gint main ( gint argc, gchar * argv[] ) {
GtkWidget * window;
GtkWidget * button;
gtk_init ( &argc, &argv );
// 创建一下窗口
window = gtk_window_new ( GTK_WINDOW_TOPLEVEL );
gtk_window_set_title ( GTK_WINDOW ( window ), "Button Events" );
gtk_window_set_default_size ( GTK_WINDOW ( window ), 160, 100 );
gtk_signal_connect ( GTK_OBJECT ( window ),
"destroy",
GTK_SIGNAL_FUNC ( CloseTheApp ),
NULL );
// 创建一个按钮
button = gtk_button_new_with_label ( "Button" );
// 点击按钮
gtk_signal_connect ( GTK_OBJECT ( button ),
"clicked",
GTK_SIGNAL_FUNC ( ButtonEvent ),
"clicked" );
// 鼠标进入按钮区域
gtk_signal_connect ( GTK_OBJECT ( button ),
"enter",
GTK_SIGNAL_FUNC ( ButtonEvent ),
"entered" );
// 鼠标离开按钮区域
gtk_signal_connect ( GTK_OBJECT ( button ),
"leave",
GTK_SIGNAL_FUNC ( ButtonEvent ),
"left" );
// 鼠标在按钮上按下
gtk_signal_connect ( GTK_OBJECT ( button ),
"pressed",
GTK_SIGNAL_FUNC ( ButtonEvent ),
"pressed" );
// 鼠标在按钮上释放
gtk_signal_connect ( GTK_OBJECT ( button ),
"released",
GTK_SIGNAL_FUNC ( ButtonEvent ),
"released" );
gtk_container_add ( GTK_CONTAINER ( window ), button );
gtk_widget_show_all (window); // 显示 window 上所有部件
gtk_main ();
return 0;
}
信号处理函数总有一个 gpointer data 的参数, 它作为最后一个参数传递给 gtk_signal_connect 的指针, 被直接传递给信号处理程序中的这个数据参数.
没有评论:
发表评论