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

问题描述 投票:1回答:2

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

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

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

c user-interface ubuntu gtk gtk3
2个回答
1
投票

另一种方法是在回调中停止发射

#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);

1
投票

最简单的方法是切换到GtkSpinButton小部件。这将允许您设置numeric only。然后你可以设置用户可以使用的range of values

© www.soinside.com 2019 - 2024. All rights reserved.