Как настроить виджет GtkEntry на прием только цифр с помощью C? - PullRequest
1 голос
/ 28 апреля 2019

Я пытаюсь получить 4-значный ввод от пользователя, но не числовой ввод недопустим.Вместо того, чтобы проверять не числовые значения, могу ли я позволить пользователю вводить только числовые значения в поле GtkEntry?

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

Кстати, я работаю в Ubuntu.

Ответы [ 2 ]

1 голос
/ 28 апреля 2019

Другой способ - остановить эмиссию при обратном вызове

#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 голос
/ 28 апреля 2019

Самый простой способ - переключиться на виджет GtkSpinButton .Это позволит вам установить только числовой .Затем вы можете установить диапазон значений , который может использовать пользователь.

...