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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GTK是一种用于开发Linux GUI界面的开源工具包。它提供了许多用于创建图形用户界面的库和函数,可以用于构建各种类型的应用程序。 GTK最初是为GNU计划的一部分而创建的,它的目标是提供一个灵活、易于使用和跨平台的GUI开发工具。GTK被广泛应用于Linux发行版中,被许多知名应用程序使用,如GIMP、Inkscape等。 使用GTK来开发Linux GUI应用程序有许多优点。首先,GTK是一个跨平台的工具包,可以在Linux、Windows和Mac等操作系统上运行。这使得开发人员只需编写一次代码,就可以在不同的平台上部署应用程序。 其次,GTK提供了丰富的小部件库,可以用于创建各种用户界面元素,如按钮、文本框、列表框等。开发人员可以使用这些小部件来设计出各种各样的用户界面,从简单的工具栏到复杂的应用程序界面都可以实现。 第三,GTK的开发工具和文档非常丰富。GTK提供了许多开发辅助工具,如Glade界面设计器和GTKBuilder库,它们可以帮助开发人员更快、更有效地创建用户界面。此外,GTK还有详细的文档和教程,可以帮助开发人员学习和使用GTK。 最后,GTK是一个开源项目,拥有庞大的社区支持。这意味着开发人员可以轻松获取到各种资源和帮助,包括开发工具、示例代码和其他开发人员的经验分享。 总之,使用GTK来开发Linux GUI应用程序是一种简单、快速和可靠的选择。它提供了丰富的功能和工具,可以帮助开发人员轻松地创建出各种各样的用户界面,并且可以在不同的操作系统上运行。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值