gtk/glade程序开发(二)

微调按钮构件(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);


这一节用到的新函数:
取得微调按钮构件的当前值:
函数名: gtk_spin_button_get_value_as_int
用法:
            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));


函数名: sprintf()
用法: sprintf (buf, "%d", spinvalue1);

函数名: lookup_widget()
用法: GtkWidget *label1 = lookup_widget (GTK_WIDGET(spinbutton), "label1");

一、用Glade设计界面
步骤:1、新建glade工程
     2、依此放置 窗口(400,300)、固定位置、标签、微调按钮。
     3、为微调按钮构件,添加value_changed信号响应,object后填写:spinbutton1。
4、设置微调按钮的一些属性:值、最小值、最大值、步进增量、页面增量、页面大小。(这些属性什么意思,自己捉摸捉摸。)    
5、保存工程,并生成代码。

二、修改代码

Interface.c /*不作任何修改,看你的文件中的部分和这个一样不一样。*/

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);


callbacks.h /*不作任何修改,看你的文件和这个一样不一样。*/


callbacks.c

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);                       /*去除对话框*/

}


 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值