首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >GtkEntry与"editing_done“信号

GtkEntry与"editing_done“信号
EN

Stack Overflow用户
提问于 2013-09-10 21:40:48
回答 1查看 1.2K关注 0票数 0

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

代码语言:javascript
运行
复制
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");

}

与“隐藏”和“激活”信号连接

在输入字段中输入“自动”文本后,我想在没有按enter键的情况下自动激活。输入最后一个字符"o“后激活。我现在所做的是:在小部件上激活Gtk信号"editing_done“。但它似乎不起作用,我从来没有被调用我的回调函数。

代码语言:javascript
运行
复制
    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包含文本: auto,我不需要使用"enter“来”激活“

更新我使用的代码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-11 19:39:11

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18729189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档