微调按钮构件(spin buttons)
常用函数:
创建微调按钮构件:
/*创建微调按钮构件要用到“调整对象”,所以还要创建“调整对象”
以下就是Glade自动创建的微调按钮构件,就用到了“调整对象”*/
GtkObject *spinbutton1_adj; GtkWidget *spinbutton1; spinbutton1_adj = gtk_adjustment_new (1, 0, 100, 1, 10, 10); spinbutton1 = gtk_spin_button_new (GTK_ADJUSTMENT (spinbutton1_adj), 1, 0);
gfloat spinvalue1; gint spinvalue2; spinvalue1=gtk_spin_button_get_value(GTK_SPIN_BUTTON(spinbutton)); spinvalue2=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbutton));
g_signal_connect_swapped ((gpointer) spinbutton1, "value_changed", G_CALLBACK (on_spinbutton1_value_changed), GTK_OBJECT (spinbutton1)); callbacks.h /*不作任何修改,看你的文件和这个一样不一样。*/ void on_spinbutton1_value_changed (GtkSpinButton *spinbutton, gpointer user_data); callbacks.c void on_spinbutton1_value_changed (GtkSpinButton *spinbutton, gpointer user_data) { gchar buf[10]; gint spinvalue1; GtkWidget *label1 = lookup_widget (GTK_WIDGET(spinbutton), "label1"); spinvalue1 = gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spinbutton)); sprintf (buf, "%d", spinvalue1); gtk_label_set_text(GTK_LABEL(label1),buf); }
绘图区构件(drawingarea)
常用函数:
创建构件:
/* */
GtkWidget *drawingarea1;
drawingarea1 = gtk_drawing_area_new ();
这一节用到的新函数:
函数名: gdk_gc_new /*新建画笔*/
用法:
GdkGC *gc1;
gc1 = gdk_gc_new (drawingarea1->window);
函数名: gdk_gc_set_rgb_fg_color /*设置画笔的前景色*/
用法:
GdkColor color;
color.red = 30000;
gdk_gc_set_rgb_fg_color (gc1, &color);
函数名: gdk_draw_line /*画直线*/
函数名: gdk_draw_rectangle /*画矩形*/
一、用Glade设计界面
步骤: 1、新建glade工程
2、依此放置 窗口(400,300)、固定位置、按钮、绘图区。
3、为按钮构件,添加clicked信号响应。
4、保存工程,并生成代码。
二、修改代码
Interface.c /*不作任何修改,看你的文件中的部分和这个一样不一样。*/
g_signal_connect ((gpointer) button1, "clicked", G_CALLBACK (on_button1_clicked), NULL);
void on_button1_clicked (GtkButton *button, gpointer user_data) { GtkWidget *drawingarea1 = lookup_widget (GTK_WIDGET(button), "drawingarea1"); GdkGC gc1; /*定义画笔*/ GdkColor color; /*定义颜色变量*/ gc1 = gdk_gc_new (drawingarea1->window); /*新建画笔*/ color.red = 30000; /*定义颜色*/ gdk_gc_set_rgb_fg_color (gc1, &color); /*设置画笔的前景色*/ gdk_draw_line (drawingarea1->window, /*画直线*/ gc1, 0,0,0,300 ); color.red = 0; color.blue = 30000; /*重新定义颜色*/ gdk_gc_set_rgb_fg_color (gc1, &color); /*设置画笔的前景色*/ gdk_draw_rectangle (drawingarea1->window, /*画矩形*/ gc1, TRUE, 50, 50, 100, 100); }
文件选择对话框构件(File chooser dialog)
常用函数:
创建 构件:
/* */
GtkWidget window2;
window2 = create_filechooserdialog1 ();
gtk_widget_show (window2);
这一节用到的新函数:
函数名: gtk_file_chooser_get_filename /*取得文件名*/
用法:
gchar * filename;
filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (window2));
说明:这一节涉及到在主窗口中调用对话框的问题,所以在callbacks.h中定义了一个全局指针变量,用于指向对话框。
一、用Glade设计界面
步骤: 1、新建glade工程
2、依此放置 窗口(400,300)、固定位置、按钮、文件选择对话框。
3、为按钮构件、文件选择对话框里的“取消”、“打开”按钮,添加clicked信号响应。
4、保存工程,并生成代码。
二、修改代码
修改代码以前,把工程属性设置为“win32控制台程序”
Main.c 去掉以下部分:/*在linux下用Anjuta IDE设计时,就没有这一部分。*/ GtkWidget *fontselectiondialog1; fontselectiondialog1 = create_fontselectiondialog1 (); gtk_widget_show (fontselectiondialog1); Interface.c /*不作任何修改,看你的文件中的部分和这个一样不一样。*/ create_window1 g_signal_connect ((gpointer) button1, "clicked", G_CALLBACK (on_button1_clicked), NULL); create_filechooserdialog1 g_signal_connect ((gpointer) button2, "clicked", G_CALLBACK (on_button2_clicked), NULL); g_signal_connect ((gpointer) button3, "clicked", G_CALLBACK (on_button3_clicked), NULL); callbacks.h /*看你的文件和这个一样不一样。*/ gchar *filename; /*用于存放得到的文件名*/ (全局变量) GtkWidget *window2; /*指向对话框的指针变量(全局),通过它访问对话框。*/ void on_button1_clicked (GtkButton *button, gpointer user_data); void on_button2_clicked (GtkButton *button, gpointer user_data); void on_button3_clicked (GtkButton *button, gpointer user_data); callbacks.c void on_button1_clicked (GtkButton button, /*对应主窗口上的按钮,用于创建对话框*/ gpointer user_data) { window2 = create_filechooserdialog1 (); gtk_widget_show (window2); } void on_button2_clicked (GtkButton *button, /*对话框上的“取消”按钮*/ gpointer user_data) { g_print("No file is select/n"); gtk_widget_destroy (window2); /*去除对话框*/ } void on_button3_clicked (GtkButton button, /*对话框上的“打开”按钮*/ gpointer user_data) { filename = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (window2)); /*取得对话框中的文件名*/ g_print("The file is: /n"); g_print(filename); gtk_widget_destroy (window2); /*去除对话框*/ }