在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~~
在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~~
相关文章推荐
- MFC 如何让CEdit控件只能输入数字、正负号、小数点(浮点数)
- iOS开发中如何设置textfield输入长度并且仅仅只能输入数字
- C# 中如何实现TextBox控件只能输入数字,而不能是其他字符
- QLineEdit控件只能输入数字--QValidator结合正则
- VC限制只能输入常规数字的CEdit控件
- Javascript 验证控件只能输入数字
- ios设置textField只能输入数字用于电话号码
- C# 设置文本框等控件只能输入 正负整数或小数
- 如何控制JSP页面上的文本框只能输入数字
- TextBox控件只能输入数字
- C#--关于事件的定义及注册,如何实现在一个文本框中只输入数字或者只能输入0至9十种数字、a至z或A至Z五十二种字符。
- android 设置EditText只能输入数字
- C# 如何实现文本框只能输入数字
- 只能输入数字的TextBox控件
- MFC控件edit封装,只能输入数字、负号、小数点
- android webview 控件表单不能输入英文和数字,只能输入中文
- VC限制只能输入常规数字的CEdit控件
- Asp.net如何验证TextBox控件只输入数字(五种情况分析)
- 如何限制jsp页面的文本框中只能输入数字,输入其他字符后自动清空
- VC++6.0/MFC中如何限制Edit控件只能输入0和1