【问题标题】:How to set GtkEntry widget to only accept numbers using C?如何将 GtkEntry 小部件设置为仅使用 C 接受数字?
【发布时间】:2019-04-28 15:54:42
【问题描述】:

我正在尝试从用户那里获得 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


    【解决方案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);
    

    【讨论】:

    • 非常感谢,正是我需要的!!
    【解决方案2】:

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

    【讨论】:

    • 谢谢,工作但不是我想要的
    猜你喜欢
    • 2012-11-05
    • 1970-01-01
    • 2011-06-06
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 2013-01-14
    • 2021-06-13
    • 1970-01-01
    相关资源
    最近更新 更多