网站首页 > 技术教程 正文
本节将介绍如何创建和使用滚动按钮控件,设定滚动按钮控件的属性来进行数字选择。数值调节按钮控件(GtkSpinButton)是最常用的数字选择控件,GtkSpinButton是允许用户设置某些属性值的理想方式。GtkSpinButton允许用户单击两个箭头中的一个来增加或减少显示的值,而不必直接在GtkEntry中键入数字。仍然可以输入一个值,并且可以检查它以确保它在给定的范围内。它可以根据设置来显示并供用户选择整数或浮点数,还可以组合成其他控件。
本示例展示了数值调节按钮控件的一般使用方法。
/*数字选择*/
#include <gtk/gtk.h>
int main(int argc, char * argv[])
{
GtkWidget * window;
GtkWidget * vbox;
GtkWidget * frame;
GtkWidget * spin;
GtkWidget * label;
GtkWidget * vvbox;
GtkWidget * hbox, *vbox1, *vbox2, * vbox3;
GtkAdjustment * adj1;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL);
gtk_window_set_title(GTK_WINDOW(window), "滚动按钮");
gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
gtk_container_set_border_width(GTK_CONTAINER(window), 10);
vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
frame = gtk_frame_new("类似一个日历");
gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5);
hbox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
gtk_container_add(GTK_CONTAINER(frame), hbox);
gtk_container_set_border_width(GTK_CONTAINER(hbox), 10);
vbox1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start(GTK_BOX(hbox), vbox1, TRUE, TRUE, 5);
label = gtk_label_new("年:");
gtk_box_pack_start(GTK_BOX(vbox1), label, FALSE, FALSE, 5);
spin = gtk_spin_button_new_with_range(1990, 2100,1);
gtk_box_pack_start(GTK_BOX(vbox1), spin, FALSE, FALSE, 5);
vbox2 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start(GTK_BOX(hbox), vbox2, TRUE, TRUE, 5);
label = gtk_label_new("月:");
gtk_box_pack_start(GTK_BOX(vbox2), label, FALSE, FALSE, 5);
spin = gtk_spin_button_new_with_range(1, 12,1);
gtk_box_pack_start(GTK_BOX(vbox2), spin, FALSE, FALSE, 5);
vbox3 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_box_pack_start(GTK_BOX(hbox), vbox3, TRUE, TRUE, 5);
label = gtk_label_new("日:");
gtk_box_pack_start(GTK_BOX(vbox3), label, FALSE, FALSE, 5);
spin = gtk_spin_button_new_with_range(1, 31,1);
gtk_box_pack_start(GTK_BOX(vbox3), spin, FALSE, FALSE, 5);
frame = gtk_frame_new(NULL);
gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5);
vvbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
gtk_container_add(GTK_CONTAINER(frame), vvbox);
gtk_container_set_border_width(GTK_CONTAINER(vvbox), 10);
label = gtk_label_new("第一个滚动按钮,\n显示整数,范围:0-100");
adj1 = gtk_adjustment_new(50.0, 0.0, 100.0, 1.0, 5.0, 5.0);
spin = gtk_spin_button_new(adj1, 5, 1);
gtk_box_pack_start(GTK_BOX(vvbox), label, FALSE, FALSE, 3);
gtk_box_pack_start(GTK_BOX(vvbox), spin, FALSE, FALSE, 3);
label = gtk_label_new("第二个滚动按钮,\n显示浮点数,范围:0.1-1.50");
spin = gtk_spin_button_new_with_range(0, 9.9, 0.1);
gtk_box_pack_start(GTK_BOX(vvbox), label, FALSE, FALSE, 3);
gtk_box_pack_start(GTK_BOX(vvbox), spin, FALSE, FALSE, 3);
gtk_widget_show_all(window);
gtk_main();
return FALSE;
}
运行结果:
代码分析:
(1) 滚动按钮
有两个函数可以创建滚动按钮;一个是创建滚动按钮的函数是gtk_spin_button_new_with_range,它也有 3 个参数,第 1 个参数是最小值,第 2 个参数是最大值,第 3 个参数是每次增长的值。另一个是 gtk_spin_button_new,它有 3 个参数,第 1 个参数是 GtkAdjustment 类型,第 2 个参数是滚动按钮每次按下后数字变化的幅度,第 3 个参数是按钮中文本显示区域中显示的数字。
GtkAdjustment对象表示一个值,该值具有关联的下限和上限、步长和页面增量以及页面大小。它在几个GTK+小部件中使用,包括GtkSpinButton、GtkViewport和GtkRange (GtkScrollbar和GtkScale的基类)。GtkAdjustment对象本身不会更新值。相反,由GtkAdjustment的所有者来控制值。
GtkAdjustment * gtk_adjustment_new (
gdouble value,
gdouble lower,
gdouble upper,
gdouble step_increment,
gdouble page_increment,
gdouble page_size);
参数:
value:初始值
lower :下限的最小值
upper :上限的最大值
step_increment :数值的步长
page_increment 页面增量
page_size:页面大小
(2) 取得滚动按钮的当前值
本例中未取得滚动按钮的当前值,可以用函数 gtk_spin_button_get_value 来取得,这个值是 gdouble 型的,还可以用 gtk_spin_button_get_value_as_int 函数来取得滚动按钮的整型值。
(3) 滚动按钮的信号
滚动按钮有 4 个属于自己的信号,其中“change_value”和“value_changed”信号分别在变量改变前和改变后发出,对于用滚动按钮来控制其他控件很有用;另两个信号是“input”和“output”,分别在输入和输出时发生。
滚动按钮控件提供非常轻松的选择数字的方式,在用户要输入大量规范数字时经常用到,事实上它是一个单行输入控件和两个方向按钮控件用容器的包装组合而成,然后再用一系列函数将它们联系起来。
猜你喜欢
- 2024-09-29 安息吧 Windows XP获得最后一次安全更新
- 2024-09-29 该升级1903了,微软宣布停止支持Windows 10 1709版本
- 2024-09-29 IE7浏览器明年初退休 Vista又亮了
- 2024-09-29 用GTK+来创建一个带界面的C语言程序7——菜单的创建
- 2024-09-29 用GTK+来创建一个带界面的C语言程序9——创建工具栏
- 2024-09-29 微软官方演示:如何使用Win10手机支付?
- 2024-09-29 用GTK+来创建一个带界面的C语言程序4—给窗口添加多个控件
- 2024-09-29 暴露年龄的电脑系统:Windows XP获得最后一次安全更新
- 2024-09-29 注意!木星大红斑将会变成小红斑? 木星大红斑是什么
- 2024-09-29 最后的 Windows XP,也将在 4 月 9 日退役
你 发表评论:
欢迎- 05-1613步震撼淘宝大促闪光裂纹破墙立体字PS制作教程
- 05-16AI教程 | 绘制扁平的萌萌哒图标
- 05-160基础学平面设计所需了解的基础常识汇总
- 05-16自学平面设计需要多长时间?十六年职业设计总监告诉你
- 05-16平面设计都要学习哪些内容?
- 05-16李涛PS教程 高手之路PS教程 合成教程 —制作一个小星球
- 05-16Illustrator实例教程:制作炫酷的漩涡效果
- 05-16Illustrator实例教程:利用混合工具制作一朵炫酷的花
- 最近发表
- 标签列表
-
- sd分区 (65)
- raid5数据恢复 (81)
- 地址转换 (73)
- 手机存储卡根目录 (55)
- tcp端口 (74)
- project server (59)
- 双击ctrl (55)
- 鼠标 单击变双击 (67)
- debugview (59)
- 字符动画 (65)
- flushdns (57)
- ps复制快捷键 (57)
- 清除系统垃圾代码 (58)
- web服务器的架设 (67)
- 16进制转换 (69)
- xclient (55)
- ps源文件 (67)
- filezilla server (59)
- 句柄无效 (56)
- word页眉页脚设置 (59)
- ansys实例 (56)
- 6 1 3固件 (59)
- sqlserver2000挂起 (59)
- vm虚拟主机 (55)
- config (61)
本文暂时没有评论,来添加一个吧(●'◡'●)