GTK+图形化应用程序开发学习笔记(十三)—微调构件

                                                          GTK+图形化应用程序开发学习笔记(十三)—微调构件

微调按纽构件(GtkSpinButton)通常用于让用户从一个取值范围内选择一个值。它由一个文本输入框和旁边的向上和向下两个按钮组成。点击某一个按钮会让文本输入框内的数值大

小在一定范围内改变。文本输入框也可以直接进行编辑。

微调按钮构件允许其中的数值没有小数位或具有指定的小数位,并且数值可以按一种可

配置的方式增加或减小。在按钮较长时间呈按下状态时,构件的数值会根据工具按下时间的

长短加速变化。

微调按钮用一个调整对象来维护该按钮能够取值的范围。微调按钮构件因此而具有了很

强大的功能。

       在创建微调按纽前需要先创建微调对象。函数gtk_adjustment_new可以创建微调对象。

 

1

名称:

gtk_adjustment_new

功能:

创建微调对象

头文件:

#include <gtk/gtk.h>

函数原形:

GtkObject *gtk_adjustment_new(gflost value, gfloat lower, gflost upper, gfloat step_increment, gfloat page_increment, gfloat page_size);

参数:

value             微调按钮构件的初值

lower             构件允许的最小值

upper             构件允许的最大值

step_increment     当鼠标左键按下时构件一次增加/减小的值

page_increment     当鼠标右键按下时构件一次增加/减小的值

page_size          没有用到

返回值:

微调对象

 

      

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 创建好微调对象就可以创建微调按纽构件了,我们用gtk_spin_button_new函数来创建。

 

2

名称:

gtk_spin_button_new

功能:

创建微调按纽构件

头文件:

#include <gtk/gtk.h>

函数原形:

GtkWidget *gtk_spin_button_new(GtkAdjustment *adjustment, gfloat clim_rate, guint digits);

参数:

adjustment         微调对象

clim_rate          构件变化的加速度

digits             显示数值的小数位

返回值:

新的微调按纽构件

      

 

 

 

 

 

 

 

 

 

 

 

其中clim_rate参数是介于0.01.0间的值,指明构件数值变化的加速度。参数digits指定要显示的值的小数位数。

 

下面是创建微调按纽的例子:

#include <gtk/gtk.h>

 

int main(int argc,char *argv[ ])

{

GtkWidget *window;

GtkWidget *spin;

GtkWidget *box;

GtkWidget *label;

GtkObject *adjustment;

 

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_hbox_new(FALSE,10); /*创建组装盒*/

gtk_container_add(GTK_CONTAINER(window),box); /*将组装盒加入窗体*/

 

adjustment=gtk_adjustment_new(2007,1900,2100,1,1,0); /*创建微调对象*/

spin=gtk_spin_button_new(GTK_ADJUSTMENT(adjustment),0.5,0); /*创建微调按纽*/

gtk_box_pack_start(GTK_BOX(box),spin,TRUE,TRUE,5); /*将微调按纽加入组装盒*/

gtk_widget_show(spin);

 

label=gtk_label_new(“”);

gtk_box_pack_start(GTK_BOX(box),label,TRUE,TRUE,0);

gtk_widget_show(label);

 

gtk_widget_show(box);

gtk_widget_show(window);

gtk_main();

}

       程序运行后会得到如下界面:

 

3

名称:

gtk_spin_button_configure

功能:

设置微调按纽构件

头文件:

#include <gtk/gtk.h>

函数原形:

void *gtk_spin_button_configure(GtkSpinButton *spin_button, GtkAdjustment *adjustment, gfloat climb_rate, guint digits);

参数:

spin_button        微调按纽构件

adjustment         微调对象

clim_rate          构件变化的加速度

digits             显示数值的小数位

返回值:

     

 

 

 

 

 

 

 

 

 

 

 

 

 

创建微调按纽构件之后,还可以用下面的函数对其重新配置,其中spin_button参数就是要重新配置的微调按纽构件。

 

4

名称:

gtk_spin_button_set_adjustment

adjustment

功能:

设置/获取微调按纽构件使用的调整对象

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_spin_button_set_adjustment( GtkSpinButton *spin_button, GtkAdjustment *adjustment ); /*设置*/

GtkAdjustment adjustment(GtkSpinButton *spin_button ); /*获得*/

参数:

spin_button        微调按纽构件

adjustment         微调对象

返回值:

调整对象

 

 

 

 

 

 

 

 

 

 

 

 

 

5

名称:

gtk_spin_button_set_digits

功能:

修改显示数值的小数位

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_spin_button_set_digits( GtkSpinButton *spin_button,guint digits) ;

参数:

spin_button        微调按纽构件

digits             显示数值的小数位

返回值:

      

 

 

 

 

 

 

 

 

 

6

名称:

gtk_spin_button_set_value

功能:

修改当前显示构件的数值

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_spin_button_set_value( GtkSpinButton *spin_button, gfloat value );

参数:

spin_button        微调按纽构件

value              当前显示构件的数值

返回值:

 

 

 

 

 

 

 

 

 

 

 

7

名称:

gtk_spin_button_get_value_as_float

gtk_spin_button_get_value_as_int

功能:

获得微调按纽构件的当前值

头文件:

#include <gtk/gtk.h>

函数原形:

gfloat gtk_spin_button_get_value_as_float( GtkSpinButton *spin_button );

gint gtk_spin_button_get_value_as_int( GtkSpinButton *spin_button );

参数:

spin_button        微调按纽构件

返回值:

微调按纽构件的当前值

      

 

 

 

 

 

 

 

 

 

 微调按纽构件的当前值可以以整数或浮点数的形式获得。

gfloat gtk_spin_button_get_value_as_float以浮点数的形式获得微调按纽构件的当前值。

gint gtk_spin_button_get_value_as_int以整型的形式获得微调按纽构件的当前值。

 

我们对上面的程序稍加改动得到如下程序:

#include <gtk/gtk.h>

 

GtkWidget *spin;

void button_event(GtkWidget *widget, gpointer *data);

 

int main(int argc,char *argv[ ])

{

GtkWidget *window;

GtkWidget *box;

GtkWidget *label;

GtkObject *adjustment;

 

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_hbox_new(FALSE,10); /*创建组装盒*/

gtk_container_add(GTK_CONTAINER(window),box); /*将组装盒加入窗体*/

 

adjustment=gtk_adjustment_new(2007,1900,2100,1,1,0); /*创建微调对象*/

spin=gtk_spin_button_new(GTK_ADJUSTMENT(adjustment),0.5,0); /*创建微调按纽*/

gtk_box_pack_start(GTK_BOX(box),spin,TRUE,TRUE,5); /*将微调按纽加入组装盒*/

gtk_widget_show(spin);

 

label=gtk_label_new(“”);

gtk_box_pack_start(GTK_BOX(box),label,TRUE,TRUE,0);

gtk_widget_show(label);

 

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)

{

gint year;

 

year=gtk_spin_button_get_value_as_int(GTK_SPIN_BUTTON(spin));/*获得微调按纽的当前值*/

g_print(“Year:%d”,year);

}

       程序运行后会得到如下界面:

       当用户按“确定”按纽时相应的年份就会输出到屏幕上。

 

 

8

名称:

gtk_spin_button_set_wrap

功能:

限制微调按纽构件的文本输入

头文件:

#include <gtk/gtk.h>

函数原形:

void gtk_spin_button_set_wrap( GtkSpinButton *spin_button,gboolean wrap );

参数:

spin_button      微调按纽构件

wrap           

返回值:

     

 

 

 

 

 

 

 

 

gtk_spin_button_set_wrap函数设置是否让微调按纽构件在upperlower 之间循环。也就是当达到最大值后再向上调整回到最小值,当达到最小值后再向下调整变为最大值。

      


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值