您的位置:首页 > 其它

在entry控件中如何设置只能输入数字?

2009-01-08 20:54 323 查看
都好久没有写文章了,因为这段时间刚开始负责一个模块,忙得我自己团团转的,不是模块难,而是自己刚开始负责一个模块,很多事情都没有经验,代码的扩展性和健壮性问题,还有一些脚本问题、系统的接口等等,困惑了我不少时间,自己是一点一点的摸石头过河。不过总算告一段落,结果自己还是满意的。今天在修改BUG的时候,有测试人员提到,要entry里面只能输入数字,问了一下元老级的编程人员,这也是一种编程经验和技巧,在这作一下笔记。
在GTK中,entry或者editable并没有直接接口提供只能输入数字的,但是它有隐藏着一个信号,通过注册这个信号,过滤掉不是数字的字符就OK了。
#include <gtk/gtk.h>

static void on_entry_insert_text (GtkWidget* entry, gcahr* new_text, int new_text_length, int* position)
{
if (new_text[0] > '9' || new_text [0] < '0')
{
new_text[0] = '/0';

}

return ;

}

int main (int argc, char** argv)
{
g_type_init ();
gtk_init(&argc, &argv);

GtkWidget* window = NULL;
GtkWidget* vbox = NULL;
GtkWidget* entry = NULL;

window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_window_set_title (GTK_WINDOW (window), "entry_test");

vbox = gtk_vbox_new (FALSE, 0);
gtk_container_add (GTK_CONTAINER (window), vbox);

entry = gtk_entry_new ();
gtk_vbox_pack_start (GTK_BOX (vbox), entry, FALSE, FALSE, 10);
g_signal_connect (G_OBJECT (entry), "insert-text", G_CALLBACK (on_entry_insert_text), NULL);

gtk_widget_show_all (winodw);

gtk_main ();

return 0;

}
通过一个“insert-text”信号去过滤字符串,就可以达到只允许你输入数字的效果了。

~~END~~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: