gpt4 book ai didi

c - GtkEntry 和 "editing_done"信号

转载 作者:行者123 更新时间:2023-11-30 17:48:00 25 4
gpt4 key购买 nike

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

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 包含文本:auto,我不想要求“输入”来“激活”

更新我使用的代码。

最佳答案

您需要连接到 GtkEditable:changed 信号,并且当条目中的文本为自动时,请使用 g_signal_emit_by_name 假发送 GtkEntry:activate 信号。

关于c - GtkEntry 和 "editing_done"信号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com