分类: 嵌入式
2009-11-26 13:51:08
4.
名称:: |
gtk_calendar_select_month gtk_calendar_select_day |
功能: |
选择的日期构件的日期 |
头文件: |
#include |
函数原形: |
gint gtk_calendar_select_month( GtkCalendar *calendar,guint month, guint year ); void gtk_calendar_select_day( GtkCalendar *calendar, guint day ); |
参数: |
calendar 日历构件 month 月份 year 年 day 日 |
返回值: |
成功返回TRUE,错误返回FALSE |
gtk_calendar_select_month( )的返回值是一个布尔值,指示设置是否成功。如果设置一个非法值则会返回一个FALSE值。
使用gtk_calendar_select_day ( )函数,如果d a y参数指定的日期是合法的,会在日历构件中选中该日期。
好了我们要体验一下上面两个函数的作用:
#include int main(int argc,char *argv[ ]) { GtkWidget *window; GtkWidget *calendar; gtk_init(&argc,&argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL); calendar=gtk_calendar_new(); gtk_calendar_display_options(GTK_CALENDAR(calendar),GTK_CALENDAR_SHOW_HEADING|GTK_CALENDAR_SHOW_DAY_NAMES|GTK_CALENDAR_SHOW_WEEK_NUMBERS|GTK_CALENDAR_WEEK_START_MONDAY); gtk_calendar_select_month(GTK_CALENDAR(calendar),8,1985); gtk_calendar_select_day(GTK_CALENDAR(calendar),8); gtk_container_add(GTK_CONTAINER(window),calendar); gtk_widget_show(calendar); gtk_widget_show(window); gtk_main(); } |
程序运行后会显示如下窗体:
除了可以选中一个日期以外,在一个月中可以有任意个日期被“标记”。被“标记”的日期会在日历构件中高亮显示。函数gtk_calendar_mark_day用于标记日期,函数gtk_calendar_unmark_day用于取消标记。注意,在月份和年份变化时,被标记的日期是不会变化的。
4.
名称:: |
gtk_calendar_mark_day gtk_calendar_unmark_day gtk_calendar_clear_marks |
功能: |
标记/取消标记/清除标记 |
头文件: |
#include |
函数原形: |
gint gtk_calendar_mark_day( GtkCalendar *calendar,guint day); gint gtk_calendar_unmark_day( GtkCalendar *calendar,guint day); void gtk_calendar_clear_marks( GtkCalendar *calendar); |
参数: |
calendar 日历构件 day 日 |
返回值: |
成功返回TRUE,错误返回FALSE |
5.
名称:: |
gtk_calendar_get_date |
功能: |
取得当前选中的年/月/日 |
头文件: |
#include |
函数原形: |
void gtk_calendar_get_date( GtkCalendar *calendar,guint *year,guint *month,guint *day ); |
参数: |
calendar 日历构件 month 月份 year 年 day 日 |
返回值: |
无 |
gtk_calendar_get_date可以取得当前选中的年/月/日。在使用这个函数时,需要先声明几个guint类型的变量—传递给函数的year、month和day参数。所需要的返回值就存放在这几个变量中。如果将某一个参数设置为NULL,则不返回该值。
#include GtkWidget *calendar; void button_event(GtkWidget *widget, gpointer *data); int main(int argc,char *argv[ ]) { GtkWidget *window; GtkWidget *box; GtkWidget *button; gtk_init(&argc,&argv); window=gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_signal_connect(GTK_OBJECT(window),”destroy”,G_CALLBACK(gtk_main_quit),NULL); box=gtk_vbox_new(FALSE,10);/*建立组装盒*/ gtk_container_add(GTK_CONTAINER(window),box);/*将组装盒加入窗体*/ calendar=gtk_calendar_new();/*建立日历构件 gtk_box_pack_start(GTK_BOX(box),calendar,TRUE,TRUE,5);/*将日历构件加入组装盒*/ gtk_widget_show(calendar);/*显示日历构件*/ button=gtk_button_new_with_label(“确定”); gtk_box_pack_start(GTK_BOX(box),button,TRUE,TRUE,0); gtk_signal_connect(GTK_OBJECT(button),”clicked”,GTK_SIGNAL_FUNC(button_event),NULL); gtk_widget_show(button); gtk_widget_show(box); gtk_widget_show(window); gtk_main(); } void button_event(GtkWidget *widget,gpointer *data) { guint year; guint month; guint day; gtk_calendar_get_data(GTK_CALENDAR(calendar),&year,&month,&day);/*取得选择的年月日*/ g_print(“Year:%d Month:%d Day:%d\n”,year,month,day); } |
程序运行后得到如下窗体,当点击确定时程序打印选择的年月日。
日历构件还有一些信号它们是:
month_changed /*选择月份变化* /
day_selected /*选择日期变化* /
day_selected_double_click /*选中日期并以鼠标双击* /
prev_month /*选择前一月* /
next_month /*选择下一月* /
prev_year /*选择前一年* /
next_year /*选择下一年* /