首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确替换GtkEntry的值

如何正确替换GtkEntry的值
EN

Stack Overflow用户
提问于 2021-01-22 00:39:29
回答 1查看 42关注 0票数 0

在处理程序clearHandlereplaceHandle中,我试图使用文本函数替换GtkEntry的值,但它并不适用于我。

以下是我所做的

代码语言:javascript
复制
#include <gtk/gtk.h>

void clearHandle(GtkEntry *e)
{
    gtk_entry_set_text(e, "");
}

void replaceHandle(GtkEntry *e)
{
    gtk_entry_set_text(e, "Hello World");
}

static void activate(GtkApplication *app, gpointer user_data)
{
    GtkWidget *window;
    GtkWidget *button_box;
    GtkWidget *text_box;
    GtkWidget *clearButton;
    GtkWidget *replaceButton;
    GtkWidget *textInputBox;

    window = gtk_application_window_new(app);
    gtk_window_set_title(GTK_WINDOW(window), "First GUI in c");
    gtk_window_set_default_size(GTK_WINDOW(window), 600, 600);

    // Containers and adding them to the window
    button_box = gtk_button_box_new(GTK_ORIENTATION_VERTICAL);
    text_box = gtk_fixed_new();

    // Textbox inside container
    textInputBox = gtk_entry_new();
    gtk_entry_set_text((GtkEntry *)textInputBox, "Hello boom World");

    clearButton = gtk_button_new_with_label("Clear");
    replaceButton = gtk_button_new_with_label("Replace with hello World");

    gtk_container_add(GTK_CONTAINER(button_box), textInputBox);
    gtk_container_add(GTK_CONTAINER(button_box), clearButton);
    gtk_container_add(GTK_CONTAINER(button_box), replaceButton);

    g_signal_connect(clearButton, "clicked", G_CALLBACK(clearHandle), (GtkEntry *)textInputBox);
    g_signal_connect(replaceButton, "clicked", G_CALLBACK(replaceHandle), (GtkEntry *)textInputBox);

    gtk_container_add(GTK_CONTAINER(window), button_box);

    gtk_widget_show_all(window);
}


int main(int argc, char **argv)
{
    GtkApplication *app;
    int status;

    app = gtk_application_new("org.yk.dev", G_APPLICATION_FLAGS_NONE);
    g_signal_connect(app, "activate", G_CALLBACK(activate), NULL);
    status = g_application_run(G_APPLICATION(app), argc, argv);
    g_object_unref(app);

    return status;
}

在运行这个过程中,我在终端中得到了以下错误

代码语言:javascript
复制
(main:14233): Gtk-CRITICAL **: 06:08:43.524: gtk_entry_set_text: assertion 'GTK_IS_ENTRY (entry)' failed

(main:14233): Gtk-CRITICAL **: 06:08:44.188: gtk_entry_set_text: assertion 'GTK_IS_ENTRY (entry)' failed
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-22 05:49:17

信号给出了两个参数:首先是单击的GtkButton *,然后是userdata指针。您的回调需要将该GtkButton *作为第一个参数(即使您不使用它);目前它试图使用按钮作为条目,这就是为什么您得到“GTK_IS_ENTRY(条目)”失败的原因。

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

https://stackoverflow.com/questions/65837798

复制
相关文章

相似问题

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