我想清除我的输入框,以便当我想再次输入内容时很清楚。 我实现了一个简单的Web浏览器。 在输入框中始终是URL,但我一直在寻找的是,如果单击(激活)输入框,则应清除输入框。
我希望我可以做这样的事情:
if(gtk_window_get_focus(GTK_WINDOW(w->window)) == w->entry)
gtk_entry_set_text (GTK_ENTRY(w->entry), "");
但是我真的不知道该在哪里做以及它如何知道它可以检测到点击条目。
答案 0 :(得分:1)
有两种方法,但是在我们开始之前:用户可能想要复制URL,在单击事件时清除URL可能会造成混淆。
"grab-focus"
信号gtk_entry_set_placeholder_text
将文本设为占位符(显示为略带阴影)gtk_entry_set_icon_from_icon_name
,图标“ edit-clear-symbolic”)并连接到"icon_press"
信号。答案 1 :(得分:0)
补充亚历山大的答案...
如果您不知道将回调与信号相关联,则可以使用Online Demo。这需要四个参数:
G_OBJECT()
将其转换为相关类型grab-focus
在这种情况下,您可以这样称呼
g_signal_connect(G_OBJECT(w->entry), "grab-focus", G_CALLBACK(on_input_focus), NULL);
如果检查g_signal_connect()
的回调的签名,您将看到它接受两个参数并且不返回任何内容。最后一个参数是任意用户数据,它是g_signal_connect()
函数中的最后一个参数;我们没有设置它,可以忽略它。第一个参数是触发信号的窗口小部件-我们可以将其转换为GtkEntry
。
void on_input_focus(GtkWidget *w, gpointer data) {
gtk_entry_set_text(GTK_ENTRY(w), "");
}