c语言 - Gtk输入和"editing_done"信号



我有在gtk输入字段中设置设备的功能:

gboolean device_entry_activate_cb (GtkWidget *widget, gpointer data)
{
    const gchar *text;
    text = gtk_entry_get_text (GTK_ENTRY (entry));
    if (!strcmp( DEVICE, text )
        return FALSE;
    if ( DEVICE )
        g_free( DEVICE );
    DEVICE = g_strdup( text );
    if (0 == strcmp(DEVICE, "auto"))
    /* do something: start printer for example */
    return FALSE;
}
void device_entry_auto_activate_cb(GtkEntry* entry, const gchar* text, gpointer data)
{
    GtkEditable *editable = GTK_EDITABLE (entry);
    text = gtk_entry_get_text (GTK_ENTRY ( entry));
    if (0 == strcmp(text, ""))
        g_signal_emit_by_name(G_OBJECT (editable), "activate");
}

并与"隐藏"和"激活"信号连接

我想在输入

字段中输入"自动"文本后无需按回车键即可自动激活。在输入最后一个字符"o"后激活。我现在正在做的是:使 Gtk 信号"editing_done"在小部件上处于活动状态。但它似乎不起作用,我从未调用过我的回调函数。

    g_signal_connect(G_OBJECT(entry), "hide", G_CALLBACK(device_entry_activate_cb), app);
    g_signal_connect(G_OBJECT(entry), "activate", G_CALLBACK(device_entry_activate_cb), NULL);
    g_signal_connect(G_OBJECT(entry), "changed", G_CALLBACK(device_entry_auto_activate_cb), NULL);

如果包含文本,我不想要求"输入"来"激活"gtk_entry:自动

更新我使用的代码。

您需要连接到 GtkEditable:changed 信号,当条目中的文本是自动的时,使用 g_signal_emit_by_name 伪造发送 GtkEntry:activate 信号。

相关内容

  • 没有找到相关文章

最新更新