c - 如何使用 C 将 GtkEntry 小部件设置为仅接受数字?

标签 c user-interface ubuntu gtk gtk3

我正在尝试从用户那里获得 4 位数字的输入,但不接受非数字输入。我可以允许用户只在 GtkEntry 框中输入数值,而不是检查非数值吗?

GtkWidget *entry_pin;
entry_pin=gtk_entry_new();
gtk_entry_set_max_length (GTK_ENTRY(entry_pin),4);

顺便说一句,我在 Ubuntu 上运行。

最佳答案

Antoher 的方法是在回调中停止发射

#include <ctype.h>

void insert_text_event(GtkEditable *editable, const gchar *text, gint length, gint *position, gpointer data)
{
    int i;

    for (i = 0; i < length; i++) {
        if (!isdigit(text[i])) {
            g_signal_stop_emission_by_name(G_OBJECT(editable), "insert-text");
            return;
        }
    }
}

回调可以设置为:

g_signal_connect(G_OBJECT(widget), "insert-text", G_CALLBACK(insert_text_event), NULL);

关于c - 如何使用 C 将 GtkEntry 小部件设置为仅接受数字?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55891982/

相关文章:

c - 无论我做什么,While 循环都不会中断

c - 使用 malloc 具有 X 和 y 坐标的 N 边多边形

.net - 我在哪里可以找到这个 .NET WinForms 控件(如果存在)?

php - Laravel - php artisan 迁移问题 - 找不到驱动程序 - ubuntu

ruby - Ruby 在 Ubuntu 上需要哪些确切的依赖项?

c++ - 如何检查一个大结构中的所有字段都由编译器初始化

c++ - 当我单击文本框时发送 WM_Quit 消息

ios - iOS 9.3 系统字体名称是什么?

qt - 如何动态隐藏/显示小部件?

linux - Ubuntu 14.04 - 内核无法使用 make-kpkg 编译